当我的Tcp客户端在运行时,使用以下代码:
TCPClient.Disconnect;
TCPClient.Connect;
我收到一个异常,其类为"EIdAlreadyConnected",错误消息为"Already connected.",但我之前已经断开了连接,为什么还是会出现这个错误?
那么,我该如何完全断开连接呢?
谢谢。
当使用 Indy 10 时,您必须确保输入缓冲区为空。
if idTcpClient.connected then
begin
idTcpClient.IOHandler.InputBuffer.clear;
idTcpClient.Disconnect;
end;
您说它已经断开连接,但是您只是给出了断开命令。
网络流量需要时间,可能在您真正断开之前就已经重新连接了。
可能您需要监控一些连接状态或事件,等待直到您真正断开。
... 或者尝试处理异常并忽略它,使用try..except
TCPClient.IOHandler.InputBuffer.Clear;
TCPClient.IOHandler.CloseGracefully;
TCPClient.Disconnect;