Вопрос про Ip

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
ЧИЖ
Сообщения: 29
Зарегистрирован: 24 фев 2007, 23:57
Контактная информация:

Можт кто знает какой компонент может дать, или как узнать IP компа который находится на другом коце модемного соединения, потомучто как определить свой я знаю.

мне нужно написать мелкую прогу которая при запуске определяла бы IP соединенного с моим компьютера и прописывала его в некоторый config некоторой игры, загвоздка в определении IP.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Обычно клиент (который коннектицо к игровому серверу) делает broadcast UDP запрос и выводит пользователю список ответивших серверов.
2B OR NOT(2B) = FF
namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

Я думаю клиент может посылать широковешательный Udp пакет со своим IP и инфой что он клиент.А сервер при получении создает tcp соединение и посылает ответ клиенту по udp. клиент получив ответ сервера(с айпи сервера) содключается к нему по tcp. Возможно я что-то сильно нагородил но идея имхо правильная.

Как послать широковещательный UDP пакет ?

Код: Выделить всё

procedure TMainForm.FormCreate(Sender: TObject);
var
  Init: TWSAData;
  SockOpt: BOOL;
  Sock: TSocket;
  Target: TSockAddrIn;
begin
  WSAStartup($101,Init);
  Sock:=Socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
  SockOpt:=TRUE;
  SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST, PChar(@SockOpt),SizeOf(SockOpt)) ;
  Target.sin_port:=htons(8167); //номер порта
  Target.sin_addr.S_addr:=INADDR_BROADCAST;
  Target.sa_family:=AF_INET;
  SendTo(Sock,Data,DataBytes,0,Target,SizeOf(Target));
  WSACleanup;
end;
Ответить