Страница 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;