【发布时间】:2013-05-16 08:18:19
【问题描述】:
我有一个与远程主机的 TCP 网络连接。(windows 或 linux) 如果远程主机进程终止,recv() 失败 我知道连接已关闭。
但是,有什么方法可以检查远程主机是否 已关闭连接而没有实际接收数据?
关键是,我想定期检查远程主机是否还活着 但我不想提供或接收任何数据。
提前谢谢你
【问题讨论】:
-
如果您不想提供或接收数据,则无法检查远程主机是否处于活动状态。
-
我想你想使用 TCP Keep-Alive (Using
SO_KEEPALIVE) -
@Hasturkun 那仍然需要你做一些 I/O,否则你永远都不会发现。
-
@EJP:不完全是。 流中没有其他数据。显然,发送的是零长度数据包。
-
@EJP:哦,等等。我明白你在说什么。他仍然需要在某些时候调用
recv()或select()或类似方法来检测连接是否关闭。我仍然认为keepalive在这里是正确的。