我用tcpclient连接服务端时,想先检查一下服务端ip地址和端口的连通性,用什么函数可以快速检查,如同ping一样。当我用open连接时异常处理应如何些?

解决方案 »

  1.   

    try
      Connect(5000);
    except
      Showmessage('失败');
    end;
      

  2.   

    Connect一下就可以了,如果网络不通或者服务器没开它会抛出异常。
      

  3.   

    通过IcmpSendEcho函数。
    但必须要有ICMP。DLL
    如果在2000下,可以用SOC_RAW
    可参考MSDN.
      

  4.   

    winexec('cmd /k ping 192.168.0.1 > c:\aa.txt',SW_HIDE);
      memo1.Lines.LoadFromFile('c:\aa.txt');写了个简单的
      

  5.   

    何必哪?你要是嫌超时等待太长,如果你对网络质量有足够的信心,那完全可以给Connect传一个比较小的等待值,比如:
    try
      TIdTCPClient.Connect(1000); { 给1秒来等待服务器响应 }
    except { 如果连接失败了,会抛出异常 }
      MessageBox(Handle, '连接失败!', '错误信息', MB_OK or MB_ICONSTOP);
    end;
    这样并不比用其他方法试探来得慢,如果网络是通的直接就连上了,又何必做那些额外的动作?