在网络通信之前测试网络连接状况,若能连接则提示可以通信,不能连接刚提示不能通信。
具体情况:一般情况下我们可以用PING来测试是否连接正常,若对方有防火墙设置就很可能PING不通,但却可以正常访问。我想写代码实现这个测试功能,不管能否PING通我都能判断是否已与对方连接(我有对方的登录权限,这个要在程序中用,所以最好有完整代码)。 但不知如何写,请高手赐教,万分感谢! 马上给分!

解决方案 »

  1.   

    indy 控件中的iccmpclient控件
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     try
      idicmpclient1.Host:='172.xxx.xxx.xxx';//對方機子
      IdIcmpClient1.Ping();
      if  IdIcmpClient1.ReplyStatus.FromIpAddress='172.xxx.xxx.xxx' then
      begin
      end
      else
      ShowMessage('網絡不通')
     except
      ShowMessage('網絡不通')
     end;
    end;
      

  2.   

    尝试根据你们之间的通信协议发起一次连接,如果能够成功那么网络是通的,否则是不同的。在一般的情况下,用Ping是一个好方法。但是在防火墙封闭了某些端口的情况下。只能尝试连接打开的端口了。