Страница 1 из 1

Вопрос про Ip

Добавлено: 21 мар 2007, 00:21
ЧИЖ
Можт кто знает какой компонент может дать, или как узнать IP компа который находится на другом коце модемного соединения, потомучто как определить свой я знаю.

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

Re: Вопрос про Ip

Добавлено: 21 мар 2007, 00:46
Absurd
Обычно клиент (который коннектицо к игровому серверу) делает broadcast UDP запрос и выводит пользователю список ответивших серверов.

Re: Вопрос про Ip

Добавлено: 21 мар 2007, 11:23
namomelkor
Я думаю клиент может посылать широковешательный 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;