怎么扫描指定的IP段啊

解决方案 »

  1.   

    参考一下这个
    LanExplorer
      

  2.   

    多线程下分别用不同的IP调用以下函数,来判断端口,
    需要引用WinSock
    需要在程序初始化时,调用
    var
      WSA : TWSAData;
    begin
      WSAStartup(MakeWord(2,2),WSA);
    初始化
    Function TryConnectPort(IP : AnsiString; Port : integer) : Boolean;
    var
      Sock      : TSocket;
      ErrorCode : integer;
      Server    : TSockaddr;
    begin
      Server.sin_family      := AF_INET;
      Server.sin_port        := htons(Port);
      Server.sin_addr.S_addr := inet_addr(Pointer(IP));
      Sock                   := Socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
      ErrorCode              := connect(Sock,Server,SizeOf(Server));
      Result := ErrorCode<>Invalid_Socket;
      if Result then begin
        ShutDown(Sock);
        CloseSocket(Sock);
      end;
    end;如果是ping的话,可以考虑icmp.dll的导出函数IcmpCreateFile,IcmpCloseHandle,IcmpSendEcho来完成ping,如果有数据返回肯定在线,不过这个方法不保险,防火墙默认几乎都关闭了这个的.
      

  3.   


    MaskEdit可以用来输入IP 。
      

  4.   

    更正一下代码
      Result := ErrorCode<>Invalid_Socket;
      if Result then ShutDown(Sock);
      CloseSocket(Sock);
    !!!!!!!!Sorry