【发布时间】:2015-09-05 18:20:06
【问题描述】:
众所周知,当连接的一侧崩溃时,无法检测到连接丢失。您必须在 TCP 级别或应用程序协议级别的两端设置 keepalive。
参考资料:
但是如果对等点在同一台 Linux 机器上并且其中一个出现段错误,那么另一个会仅通过在下一次读取调用时收到错误来检测这种情况吗?
所有描述符都关闭了,对吗?那不应该正确关闭连接吗? (如果网络出现故障,那是内核故障,无论如何每个人都注定要失败)
我正在尝试获得 FIFO 的这一好功能:当您关闭一端时,另一端会收到错误/信号。
【问题讨论】:
-
我有点怀疑行为是否会发生任何变化,无论对等方在哪个盒子上运行。
-
这是 TCP 连接还是 UNIX 套接字连接?
-
这不是已知的事实。
send()最终会检测到它。 两个你引用的来源都这么说。 -
@tadman,它是一个 TCP 套接字。 EJP,它在吹毛求疵。