1

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

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

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

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

有没有办法立即终止 TCPClient,不管它当时在做什么?

4

2 回答 2

1

您应该清除InputBufferafter call Disconnect(),而不是之前。

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

于 2011-03-25T01:50:40.720 回答
0

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

于 2011-03-24T15:52:56.867 回答