Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Немогу принять ответ сервера 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.067 c
1-1090426260
ko
2004-07-21 20:11
2004.08.01
TSaveDialog


1-1089899316
Pontic
2004-07-15 17:48
2004.08.01
Блокирование управлением ХР


3-1089169402
Jedu
2004-07-07 07:03
2004.08.01
DBGridEh - поля в записи?


1-1090081522
alice
2004-07-17 20:25
2004.08.01
$00000000


1-1089879046
Bizon's
2004-07-15 12:10
2004.08.01
Include Version Information