是否可以立即终止TCPClient?

时间:2011-03-24 14:56:18

标签: delphi delphi-2009 indy10

我的应用使用TidTCPClient将数据发送到服务器。服务器使用TidTCPServer。一切正常,我现在正试图处理意外情况。

当我断开服务器和客户端之间的网线,然后尝试关闭客户端时,它会等待很长时间,直到它最终关闭:

TCPClient.IOHandler.InputBuffer.Clear;
TCPClient.Disconnect;
TCPClient.Free;

TCPClient.Free是它等待的地方。这有时是30秒,有时甚至更长。

有没有办法立即终止TCPClient,无论它在那一刻做什么?

2 个答案:

答案 0 :(得分:1)

您应该在致电InputBuffer之后清除Disconnect(),而不是之前。

在任何情况下,断开/释放TIdTCPClient时套接字都没有理由导致这种挂起,除非你已经搞乱了套接字的LINGER选项。所以我必须首先怀疑你自己的代码是错误的。您使用的是哪个版本的Indy?您是否已将任何事件处理程序分配给TIdTCPClient?您是否尝试在调试器中单步执行TIdTCPClient的析构函数以查看实际发生的情况?

答案 1 :(得分:0)

它可能等待超时。查看组件的属性以降低超时值