在TCP中检测到另一个对等体

时间:2013-02-25 09:27:37

标签: c sockets tcp

我正在通过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.

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

我在想吗?

1 个答案:

答案 0 :(得分:0)

读取返回0的原因是对等体发送FIN。如果您和对等方之间存在网络问题(网络电缆已拔出),您的应用程序如何在没有保持连接的情况下检测到它?读取将长时间阻塞(取决于您的操作系统环境)。