使用Indy的TTCPClient控件进行TCP连接时,会出现网络断开后要重新连接的情况:
一般进行通信时会先判断当前的连接情况,当连接是断开时,试图发起新连接,这个时候如果连接仍然还是断开的,则会挂起,即使使用了try…finally …end 也不行,因为此时控件连接不上异常,不会退出来,一定要使用try … except … end处理一下这个异常才行。
if TCPClient1.Connected = false then
begin
try
TCPClient1.Connect; //断线重连 !!!连接不上时直接挂起了。
TCPClient1.Socket.Write(arraydata,Length(arraydata));
except //使用finally时,异常挂起,执行不到这一步
State:=dsUnline; //断线时先定义为离线状态
Exit;
end;
end;
因为我这个连接使用在线程中,所以没有处理异常信息。
记下这个信息,因为每次都会出现这个问题,不专门测试还发现不了,因为测试情况下网络连接肯定都是正常的。