我正在通过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.
这对我有用,所以我不明白需要保持活着,我对服务器有相同的逻辑,它对我有用。
我在想吗?
答案 0 :(得分:0)
读取返回0的原因是对等体发送FIN。如果您和对等方之间存在网络问题(网络电缆已拔出),您的应用程序如何在没有保持连接的情况下检测到它?读取将长时间阻塞(取决于您的操作系统环境)。