当我的Tcpclient工作时,使用以下代码:
TCPClient.Disconnect;
TCPClient.Connect;
我得到“引发异常类EIdAlreadyConnected,消息'已经连接。'。”错误仍然存在(而之前已经断开连接)。
那么,我怎么能完全断开它?
谢谢
答案 0 :(得分:18)
在indy 10使用你必须确保inputbuffer为空。
if idTcpClient.connected then
begin
idTcpClient.IOHandler.InputBuffer.clear;
idTcpClient.Disconnect;
end;
答案 1 :(得分:1)
你说它已断开连接,但你只是断开了命令。
网络流量需要时间,并且可能在您真正断开连接之前重新连接。
可能你需要监视一些连接状态或事件,等到你真的断开连接。
...或尝试使用try..except
处理异常并忽略它答案 2 :(得分:1)
TCPClient.IOHandler.InputBuffer.Clear;
TCPClient.IOHandler.CloseGracefully;
TCPClient.Disconnect;