gpt4 book ai didi

delphi - 检查连接是否已关闭!

转载 作者:行者123 更新时间:2023-12-03 18:34:15 25 4
gpt4 key购买 nike

我用 Indy (TCPServer/Client) 编写了一个 Delphi (2009) 应用程序。
而且我在 TCPServer 级别有一个问题:它仅在客户端再次尝试重新连接到服务器时才检测到客户端的断开连接(在重新启动 PC 后)。
我已经逐步执行了我的应用程序,当客户端尝试重新连接时(重新启动后),服务器会引发(我认为是静默)异常:连接由对等方重置。
为什么这个异常(exception)为时已晚。

(我认为线程列表不会立即发布)

你怎么看 ?

最佳答案

这是 TCP 协议(protocol)的低级细节。默认情况下,它不传输keep-alive数据包,因为这会浪费带宽,因此只有在发生提示它检查连接的事情时才会意识到连接已经断开。 (我不确定为什么来自同一个客户端的重新连接会触发这种情况。)

您可以让 TCP 发送定期保持事件数据包以更早地发现断开连接。在 Windows 中,这可以由服务器应用程序激活,但通过注册表进行配置(参见 here 了解详细信息)。

您还可以通过让客户端或服务器偶尔发送空数据包(一个什么都不做的数据包)来实现协议(protocol)级别的保持事件机制。这显然要求您使用的协议(protocol)定义某种无所事事或无所事事的消息(NOOP、STATUS、PING ......类似的东西)。

关于delphi - 检查连接是否已关闭!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com