Спасибо! Пол проблемы решено!
Пробую ответ принимать вот так(Часть кода)
type
TRecieveIP = packed record
IP1: Byte;
IP2: Byte;
IP3: Byte;
IP4: Byte;
IP5: Byte;
IP6: Byte;
IP7: Byte;
IP8: Byte;
IP9: Byte;
IP10: Byte;
IP11: Byte;
IP12: Byte;
IP13: Byte;
IP14: Byte;
IP15: Byte;
IP16: Byte;
end;
в процедуре объявляю:
var
e:TRecieveIP;
принимаю:
udpsckt1.ReceiveBuf(e,SizeOf(e));
Обрабатываю и вывожу:
mmo1.Lines.Add(inttostr(e.IP1));
mmo1.Lines.Add(inttostr(e.IP2));
mmo1.Lines.Add(inttostr(e.IP3));
mmo1.Lines.Add(inttostr(e.IP4));
mmo1.Lines.Add(inttostr(e.IP5));
mmo1.Lines.Add(inttostr(e.IP6));
mmo1.Lines.Add(inttostr(e.IP7));
mmo1.Lines.Add(inttostr(e.IP8));
mmo1.Lines.Add(inttostr(e.IP9));
mmo1.Lines.Add(inttostr(e.IP10));
mmo1.Lines.Add(inttostr(e.IP11));
mmo1.Lines.Add(inttostr(e.IP12));
mmo1.Lines.Add(inttostr(e.IP13));
mmo1.Lines.Add(inttostr(e.IP14));
mmo1.Lines.Add(inttostr(e.IP15));
mmo1.Lines.Add(inttostr(e.IP16));
В мастер сервер был добавлен всего один сервер с IP 95.31.211.21:27015(не реклама)
ответ пришел такой:
255
255
255
255
102
10
95
31
211
21
105
135
0
0
0
0
как видно что если сложить строки 7,8,9,10 то получим Ip но без порта.
Добавил в мастер сервер какой то другой сервер специально с другим портом 91.211.118.9:27025(не реклама)
Ответ пришел такой:
255
255
255
255
102
10
91
211
118
9
105
145
0
0
0
0
как видно что если опять сложить строки 7,8,9,10 то получим Ip но опять без порта.
Порт у этого сервера другой и мы видим что строки 11 и 12 изменились.
Значит они отвечают за порт.
На сайте разработчика игры написано что IP приходят в виде byte а порты в неизвестном мне Unsigned Short, в описании написано: Unsigned Short - A signed integer type. C++ standards guarantee it is at least 16 bits, no longer than type integer and longer than type byte.
Может порты надо не в byte записывать, не пойму.
Собственно вопрос: Подскажите как извлечь порт?
|