Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 21.03.2009, 14:27   #11
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Старый добрый TclientSocket - и большинство вопросов подымаемых тут просто бы не задавалось.
Цитата:
У них вообще нет этих функций , нету ни Read ни Write , ни Send , ни Recieve , как с пакетами то работать?
хы.
ClientSocket1.Socket.SendBuf(blabla, blablabla); = отправка
в эвентах прием. а именно. в OnRead
чтото вроде
Socket.ReceiveBuf(blablabla, Socket.ReceiveLength);

вот к примеру. по самой компоненте
кстати. один из самопальных трюков, возможно пригодится -)
delphi Код:
procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; Socket.Close; end;
зы.
delphi Код:
IdTCPClient1.ReadBuffer(size, 2); SetLength(pck, size-2); IdTCPClient1.ReadBuffer(pck[1], size-2);//ты уже 2 байта в сайз считал.. куда тебя понесло полный пакет тянуть ?! Memo1.Lines.Add(StringToHex(pck,' '));

не забудь склеить сайз и само тело пакета.

зы2
в идеале чтото вроде

delphi Код:
var   Buff: array [0..65535] of AnsiChar;   len : Word; begin   //читаем длину пакета 2 байта поэтому это Word, 0..65535   IdTCPClient1.ReadBuffer(@len, 2);   //впихиваем это дело в буффер   CopyMemory(@Buff[0], @len, 2);   //читаем остаток пакета запихивая в буфер начиная с 3го байта   IdTCPClient1.ReadBuffer(@Buff[2], len - 2);   //готово. в массиве Buff у нас наш полученный пакет.   Memo1.Lines.Add(Format('получен пакет длинной %d, hex:'#10#13' %s', [len, ByteToHexStr(@Buff[0], len)]); end;
на правильность синтаксиса и работоспособность кода не претендую. ибо не проверял.

зы3. я использую следующий байттохекс
delphi Код:
function ByteToHexStr(Data: Pointer; Len: Integer): String; var   I, Octets, PartOctets: Integer;   DumpData: String; begin   if Len = 0 then Exit;   I := 0;   Octets := 0;   PartOctets := 0;   Result := '';   while I < Len do   begin     case PartOctets of       0: Result := Result + Format('%.4d: ', [Octets]);       9:       begin         Inc(Octets, 10);         PartOctets := -1;         Result := Result + '    ' + DumpData + sLineBreak;         DumpData := '';       end;     else       begin         Result := Result + Format('%s ', [IntToHex(TByteArray(Data^)[i], 2)]);         if TByteArray(Data^)[i] in [$19..$FF] then           DumpData := DumpData + Chr(TByteArray(Data^)[i])         else           DumpData := DumpData + '.';         Inc(I);       end;     end;     Inc(PartOctets);   end;   if PartOctets <> 0 then   begin     PartOctets := (8 - Length(DumpData)) * 3;     Inc(PartOctets, 4);     Result := Result + StringOfChar(' ', PartOctets) +       DumpData   end; end;

зы4.
прием оформляйте в нитях, не забывайте что читать вы должны с сокета ровно столько сколько там есть. в противном случае висяки обеспечены

Добавлено через 26 минут
2 Amorality. по поводу инжект длл. если реь идет про используемый в пакетхаке то код там мудренный но ничего "специальносделаного чтобы остальные непоняли или не скомпилили" там нет.
так же инжект просто перенавравляет соединение требуемого приложения на локальный сервер. тобишь на заранее открытый твоей программой серверный сокет. никакого чтения и отправки данных касаемо траффика там нет. все в самом пакетхаке.

Последний раз редактировалось alexteam, 21.03.2009 в 14:50. Причина: Добавлено сообщение
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился 2 спасибками от:
 

  CoderX :: Forums > Основные форумы > Программинг


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:44.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!