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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 20.08.2008, 12:32   #41
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Amorality Посмотреть сообщение
PanAm,
У них вообще нет этих функций , нету ни Read ни Write , ни Send , ни Recieve , как с пакетами то работать?
наверное - если нету методов в классе - то могут быть в классе родителя
или они есть в проперти типо Socket, Buffer, stream etc.

а че мой пример не работает?
http://www.indyproject.org/docsite/h...TCPClient.html
пропертя Socket это:
http://www.indyproject.org/docsite/h...lerSocket.html
и тут имееться все нужное!!!!

ПС: как с вами сложно ) - сжальтесь - я же нече не рублю в этой библиотеке
  Ответить с цитированием
Старый 20.08.2008, 18:45   #42
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

тоже долго втыкал чтож не так... а вот - размер пакета - это четко размер пакета без 2 байт самого размера, надо писать так
delphi Код:
try IdTCPClient1.ReadBuffer(size, 2); SetLength(pck, size); IdTCPClient1.ReadBuffer(pck[1], size); Memo1.Lines.Add(StringToHex(pck,' ')); finally

Добавлено через 1 минуту
вот что у меня принимается
первый пакет от сервера
10 - EF 7C 28 5A 78 0A E8 F2 18 00

Добавлено через 4 минуты
Цитата:
Сообщение от Amorality Посмотреть сообщение
Вот только зависает программа, когда нажимаю кнопку Connect Да так, что выключить ее можно только убив процесс, что делать ?
полезно для отладки следить за OnError
коды ошибок можно посмотреть например тут
http://www.westbyte.com/ida/index.phtml?page=faq_ec

Последний раз редактировалось PanAm, 20.08.2008 в 18:45. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился спасибкой от:
Старый 20.08.2008, 20:27   #43
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от PanAm Посмотреть сообщение
коды ошибок можно посмотреть например тут
http://www.westbyte.com/ida/index.phtml?page=faq_ec
или в справке дельфи)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 20.08.2008, 23:10   #44
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

xkor,
Слушай а можешь привести пример работы твоей Inject.dll? Перехват - Чтение \ Отправка .подключать я вроде знаю как, через LoadLibrary
Amorality вне форума   Ответить с цитированием
Старый 20.08.2008, 23:55   #45
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

посмотри исходники...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 21.08.2008, 00:13   #46
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

xkor,
Они либо в д7 так криво выглядят, либо ты специально не все выложил, там 1 сплошной код, даже скомпилить и посмотреть нельзя (


PanAm,
С приведенным тобой кодом зависает абсолютно на любом сервер, а с кодом Хкора, только на абисе, ну и еще на парочке

Добавлено через 4 минуты
ПС Трейсом проверила , Size в итоге получается 186, пакет какой-то кривой, такого вида #0#0#0#0#1 итп, но это я думаю верно ... Он же не перекодирован в Hex, а зависает непосредственно на
Memo1.Lines.Add(StringToHex(pck,''));

Последний раз редактировалось Amorality, 21.08.2008 в 00:13. Причина: Добавлено сообщение
Amorality вне форума   Ответить с цитированием
Старый 21.08.2008, 01:09   #47
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
или в справке дельфи)

на справку сложней ссылку дать
а в MSDN искать - вообще черт голову сломит
PanAm вне форума   Ответить с цитированием
Старый 21.08.2008, 02:05   #48
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

PanAm,
Лучшеб сказал почему твой код не работает
Amorality вне форума   Ответить с цитированием
Старый 21.08.2008, 18:06   #49
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

Мой? да вроде работает...
Может не коректно, но это другой вопрос.
http://panam.jino.ru/files/LS-001.RAR

Добавлено через 28 минут
вообщем, я не гуру в протоколах, темболее Логин-сервера, но вот через мой пример соединяясь с 217.13.197.170:2106 получаю пакет - EF 7C 28 5A 78 0A 20 49 18 00 - 10 байт, всегда одно и тоже, черте что, вот другой сервер (С4) дал - 00 B3 7F 66 1D 5A 78 00 00 00 00 - нормальный init для ревизии 785A.

Добавлено через 7 минут
а Может там порт поменяли, а на 2106-ом оставили ловушку для лошадей?

Добавлено через 56 минут
Тут говорили про абисс, но у него вроде LS - 85.112.114.102:2593

Добавлено через 1 час 10 минут
Вообщем тоже застопорился на отправке (хотя дело просто во времени) а потом как получить ответ от сервера? как узнать в TCPClient что пакет получен?

Последний раз редактировалось PanAm, 21.08.2008 в 18:06. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
Старый 21.03.2009, 14:27   #50
Рыцарь
 
Аватар для 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, время: 03:01.

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

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