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

Тема в разделе "Delphi - Сети", создана пользователем zuksoft, 27 апр 2005.

Статус темы:
Закрыта.
  1. zuksoft

    zuksoft Гость

    Hi у меня к вам мальнький вопросик...
    Мне необходимо пропинговать диапазон IP адресов на наличее компьютеров в локальной сети.
    Пробывал ics-компоненты-Пингует но очень медленно.
    Пробывал компоненn TClientSocet-Он вообче отказывается видеть открытые порты под Windows XP SP2.
    Пробывал через WinSock- вот что получилось
    -----------------------------------------------------------------------------------
    Код (Text):
    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 миллесекунд не находила компа, чтоб сама отрубалась.

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

    anjey Гость

    ставь таймаут
     
  3. zuksoft

    zuksoft Гость

    Подскажите как его поставить.
    Буду благодарен.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей