function TForm1.IPConnect(IP:String):Boolean;
var
  Ping:TPing;
begin
  Result:=False;
  {连接主机}
  DataModule1.IDTCPClient1.Host := IP ;
  {端口}
  DataModule1.IDTCPClient1.Port := 8341;
  {连接超时设置}
  DataModule1.IdTCPClient1.ReadTimeout:=5000;  if DataModule1.IDTCPClient1.Connected then
    begin
      DataModule1.IDTCPClient1.Disconnect;
    end
  else
    try
      Ping:=TPing.Create;
      if Ping.PingHost(IP)=True then
        begin
          DataModule1.IDTCPClient1.Connect; //运行到此处就弹出 Read TimeOut 消息框,不知道怎么回事.
          Result:=True;
        end
      else
        begin
          Delay(50);
          Result:=False;
        end;
      Ping.Destroy ;
    except
      on E:Exception DO
        begin
          Result:=False;
        end;
    end;
end;网络设备能PING通的情况下,但不能进行会话连接,此时会弹出提示框"Read TimeOut",请问这个问题如何解决,另外就是如何判断在不能进行会话连接时,断开这个会话连接,函数返回一个布尔值.

解决方案 »

  1.   

    命令行里 telnet IP 8341能不能打开?
      

  2.   

    DataModule1.IdTCPClient1.ReadTimeout:=5000;
    把这段注释后,运行看一下
      

  3.   

    我碰到了同样的问题,连接本机可以127.0.0.1没有问题,但是服务端放到服务器上,再去clinet就不行了,不知道是什么原因
      

  4.   

    IdTCPClient1.count(500),可以代替ping
    为什么用ping?
    5000非常大了,除非你开了200线程的bt下载,否则不会引起timerout