F
fenghai4690
Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个客户端从一个监控设备取数据,两者之间用tcp连接。我每隔1分钟向监控设备发命令,取数据。代码如下:
comand:='getdata';
idtcpClient1.IOHandler.Write(comand);
a:=round(idtcpClient1.IOHandler.ReadSmallInt(false));
问题是如果监控设备由于某种原因(断电、重启等)异常断开了连接,这时候程序执行到最后一句是会出现较长时间的等待。有没有什么方法能够快速的判断tcp连接是否有效?
而且在取数据失败后,我尝试断开后重连,但也有错误,代码如下:
try
上面取数据的代码
except
idtcpClient1.Disconnect; //报错:socket error #10054 connection reset by peer
idtcpClient1.Connect;
end;
comand:='getdata';
idtcpClient1.IOHandler.Write(comand);
a:=round(idtcpClient1.IOHandler.ReadSmallInt(false));
问题是如果监控设备由于某种原因(断电、重启等)异常断开了连接,这时候程序执行到最后一句是会出现较长时间的等待。有没有什么方法能够快速的判断tcp连接是否有效?
而且在取数据失败后,我尝试断开后重连,但也有错误,代码如下:
try
上面取数据的代码
except
idtcpClient1.Disconnect; //报错:socket error #10054 connection reset by peer
idtcpClient1.Connect;
end;