0

我正在通过 TCP 构建一个 APP 并检测另一端已关闭,我需要实现一个心跳机制,客户端不断发送伪 ping 数据包。我做了一些测试,看到当另一端宕机时,读取的字节数为0。

所以我可以不这样吗?:

If  FD is set, then 
read from fd
if read bytes is 0 then
Assume socket is closed, close fd and do a reconnect.

这对我有用,所以我不明白保持活动的必要性,我对服务器有相同的逻辑,它对我有用。

我想得直吗?

4

1 回答 1

0

读返回0的原因是对端发送了FIN。如果您和对等方之间存在某些网络问题(网线已拔出),您的应用程序如何在没有 keepalive 的情况下检测到它?读取会阻塞很长时间(取决于您的操作系统环境)。

于 2013-02-25T09:39:33.340 回答