Форум: "Сети";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизНемогу принять ответ сервера UDP Найти похожие ветки
← →
Sn (2004-05-30 19:51) [0]У меня такая проблема:
У нас по сетке частенько играют в Couter-Strike.
Я решил сделать что то вроде сканера этой игры чтоб довала знать когда кто то
создал игру(т.е. сервер) и играет. Думал это будет просто. Возьму снифер отловлю запрос который
надо послать, потом пошлю его своей прогой и получу ответ после чего она (прога) обработает
принятую инфу и даст мне знать что и как. Так вот, запрос я отволил (яяяяinfostring)узнал и
порт и протокол (UDP, порт 27015). Ну думаю дело сделано. Быстренько скрутил пробный вариант
проги (для теста) послал запрос широковещательно по адресу 255.255.255.255 (IdUDPClient1.Send(Edit4.Text);)
и посмотрел по сниферу куда приходит овет, приходит он на этот же порт (27015). Но вот беда я не могу получить
этот ответ своей прогой. прочитал в инете статью про создание UDP чата и сделал подобный обработчик приходящих
сообщений. Но это не помогло, я принимаю свойже запрос и запросы других клиентов (игры Couter-Strike)
но вот ответ который мне посылает мне сервер Couter-Strike я по прежнему принять не могу.
даже незнаю вчем тут дело. дайте пожалуста совет или кусочек кода чтоб принять эту строку. вот нужная мне
строка (отловленая снифером):
0030: 66 6F 73 74 72 69 6E 67 72 65 73 70 6F 6E 73 65 fostringresponse
0040: 00 5C 70 72 6F 74 6F 63 6F 6C 5C 34 36 5C 61 64 .\protocol\46\ad
0050: 64 72 65 73 73 5C 31 30 2E 31 2E 30 2E 34 30 3A dress\10.1.0.40:
0060: 32 37 30 31 35 5C 70 6C 61 79 65 72 73 5C 33 5C 27015\players\3\
0070: 70 72 6F 78 79 74 61 72 67 65 74 5C 30 5C 6C 61 proxytarget\0\la
0080: 6E 5C 31 5C 6D 61 78 5C 33 32 5C 67 61 6D 65 64 n\1\max\32\gamed
0090: 69 72 5C 43 53 54 52 49 4B 45 5C 64 65 73 63 72 ir\CSTRIKE\descr
00A0: 69 70 74 69 6F 6E 5C 43 6F 75 6E 74 65 72 53 74 iption\CounterSt
00B0: 72 69 6B 65 5C 68 6F 73 74 6E 61 6D 65 5C 4C 65 rike\hostname\Le
00C0: 65 5C 6D 61 70 5C 63 73 5F 61 73 73 61 75 6C 74 e\map\cs_assault
00D0: 5C 74 79 70 65 5C 6C 5C 70 61 73 73 77 6F 72 64 \type\l\password
00E0: 5C 30 5C 6F 73 5C 77 5C 73 65 63 75 72 65 5C 30 \0\os\w\secure\0
00F0: 5C 6D 6F 64 5C 31 5C 6D 6F 64 76 65 72 73 69 6F \mod\1\modversio
0100: 6E 5C 31 5C 73 76 6F 6E 6C 79 5C 30 5C 63 6C 64 n\1\svonly\0\cld
0110: 6C 6C 5C 31 00 ll\1.
и вот мой обработчик приема (который ее не ловит)
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var StringFormatedStream: TStringStream;
begin
StringFormatedStream := TStringStream.Create("");
StringFormatedStream.CopyFrom(AData, AData.Size);
Memo1.Lines.Add(ABinding.PeerIP+" "+StringFormatedStream.DataString);
StringFormatedStream.Free;
end;
P.S. Да чуть незабыл для работы я использую Delphi 6 и компоненты IdUDPServer( для приема) и IdUDPClient(для передачи запроса)
← →
Erik1 (2004-05-31 11:24) [1]Просто здорово, а один компонент использовать нехочеш?!
← →
Sn (2004-05-31 15:38) [2]Там в клиенте всего одно событие (OnStatus) как его обрабатывать?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c