![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
быстрый ping [D7, Win2k]
veresk © (2003-10-25 14:56:00)
Здравстуйте мастера.
на сколько я знаю, пинговать можно с помощью IcmpSendEcho,
отправляя запрос отдельно взятому компу.
а как можно отправить запрос всем, а потом разгребать какой- нибудь буффер?
многопоточный вариант пробовал(каждому компу - запрос в отдельном потоке)- не понравилось.
заранее благодарен.
All (2003-10-29 08:52:00) [1]
Посмотри по этой ссылочке, правда на Builder`e, но какая разница, юзается то WIN API.
http://borland.xportal.ru/forum/viewtopic.php?t=7012
Дмитрий В. Белькевич (2003-10-26 20:52:00) [2]
Шли широковещательный udp пакет, или несколько, и жди ответы от серверов. Это, конечно, не пинг, но рабоает. Тот же Counter Strike или Quake именно так и делает.
Вот код на отсылку, не тестил, правда:
> Как средствами дельфи послать субж?
Ручками батенька...
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;
Anatoly Podgoretsky (2003-10-25 15:00:00) [3]
Никаких широкофвещательных пингов не существует, придется все таки к каждому узлу обращаться отдельно.