【发布时间】:2016-04-15 03:19:37
【问题描述】:
我正在尝试创建一个服务器/客户端应用程序,其中服务器将数据发送到客户端,客户端将数据发回。但由于某种原因,我无法让它工作,因为我不知道如何在不写入数据的情况下检测非正常断开连接(我无法写入数据,因为缓冲区将充满我不需要的错误数据)。还有另一种方法吗?我正在使用 TCP。
【问题讨论】:
-
TCP 旨在优雅地处理连接中断。 TCP 从消失的连接中恢复的能力是一个特性,而不是一个错误。换句话说:如果没有通信正在进行,没有断开。当您确实需要知道对方是否还活着时,传统的解决方案是在协议中加入一个周期性的心跳:一些除了通过响应确认对方仍然存在之外什么都不做的操作。如果没有这样的操作,人们偶尔会使用零字节写入,但这并不完全可靠。