C ++ Socket Recv()和网络接口关闭

时间:2016-02-18 07:37:51

标签: c++ sockets recv

我已经使用C中的普通套接字编写了一个客户端来连接到远程机器以维持持久连接以便接收推送消息。一切都很好。为了使它持久化,我设置了Keepalive并在循环中等待recv()函数。

问题是,当网络接口关闭时,recv()不会返回。据我所知,从套接字文档中,对等方必须断开连接才能返回recv()。网络接口关闭与对等断开连接不同。

这里需要的是,如果网络接口出现故障,我需要安排重新连接,以便建立通道。

对此有何想法?

1 个答案:

答案 0 :(得分:0)

使用您希望强制接收操作超时的任何机制。根据您的使用案例的具体情况,您可能希望在发生超时时断开连接,或者您可能希望发送一些内容来检查连接的状态。

您应该记录在TCP之上使用的任何协议,并且文档应指定如何检测断开连接。您必须发送以检测连接丢失,因此设计为在TCP之上运行的每个协议都应考虑到这一点。