gpt4 book ai didi

c - TCP Keepalive 是确定断开链接的唯一机制吗?

转载 作者:可可西里 更新时间:2023-11-01 02:33:27 25 4
gpt4 key购买 nike

我最近遇到了一个问题,即 TCP 服务器和客户端之间的中间链接出现故障。如果主服务器关闭,客户端有连接到辅助服务器的要求。当主服务器被关闭时(例如..通过在终端上执行 ^C),TCP 关闭序列通过并且客户端成功检测到断开的链接并尝试辅助。但是,如果中间链路发生故障,客户端和服务器将不会意识到这一点。客户端可以检测到的唯一方法是它的 TCP 缓冲区何时被失败的“发送”操作填满。

作为对此的解决方案,“TCP Keepalive”机制已被使用。这工作令人满意。

我的问题是“TCP Keepalive”是唯一的解决方案吗?

-帕布

最佳答案

Keepalive 旨在处理所谓的半开连接,其中一侧(通常是接收请求的服务器)不知道连接已断开。客户端通常知道这一点,因为尝试向服务器发送请求会返回错误。

另一种选择是保持监听器运行 - 当客户端检测到通信问题时,它只是尝试再次连接到服务器。服务器获取传入连接,检查它是否来自同一 IP 地址,如果是,则关闭打开的连接并建立新连接。

但是如果客户端不知道连接断开了并且服务器需要发送一些东西,服务器就没有办法重新建立连接,只能使用 TCP keepalive。

如果你不想使用keepalive,你可以使用应用层的keepalive,例如发送诸如特定于应用程序的回显消息之类的东西。

关于c - TCP Keepalive 是确定断开链接的唯一机制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348658/

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