Сетевое программирование

  • Автор темы zuksoft
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zuksoft

Гость
#1
Hi у меня к вам мальнький вопросик...
Мне необходимо пропинговать диапазон IP адресов на наличее компьютеров в локальной сети.
Пробывал ics-компоненты-Пингует но очень медленно.
Пробывал компоненn TClientSocet-Он вообче отказывается видеть открытые порты под Windows XP SP2.
Пробывал через WinSock- вот что получилось
-----------------------------------------------------------------------------------
Код:
function PingPort(host:String;port:integer):boolean;
var
WSAData:TWSAData;
FSocket:TSocket;
addr:TSockAddr;
begin
addr.sin_family:=AF_INET;
addr.sin_addr.S_addr:=inet_addr(pchar(host));
if WSAStartup($101,WSAData)=0 then
 begin
 FSocket:=socket(AF_INET,SOCK_STREAM,0);
  if FSocket<>INVALID_SOCKET then
   begin
   addr.sin_port:=htons(port);
    if connect(FSocket,addr,sizeof(addr))=0 then
     begin
     result:=true;
     CloseSocket(FSocket);
     end;
   end;
 end;
WSACleanup;
end;

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
if PingPort('192.168.0.142',135)=true then ShowMessage('Типа потрт открыт, а значит комп в сети');
end;
Все работает, но опять же медленно. Если комп в сети то он сразу ето выдает, если же его нет- то он виснит примероно на 20 сек.

Подскажите как правильно просканить сеть на наличее компов, или ка сделать так что бы моя функция если в течени 5 миллесекунд не находила компа, чтоб сама отрубалась.

Зарание большое СПАСИБО.
 
Z

zuksoft

Гость
#3
Подскажите как его поставить.
Буду благодарен.
 
Статус
Закрыто для дальнейших ответов.