【问题标题】:C++ Socket Recv() and Network Interface going downC++ Socket Recv() 和网络接口出现故障
【发布时间】:2016-02-18 07:37:51
【问题描述】:

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

问题是,当网络接口关闭时,recv() 不会返回。正如我从套接字文档中了解到的那样,对等方必须断开连接才能返回 recv()。网络接口断开与对等断开连接不同。

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

请问有什么想法吗?

【问题讨论】:

标签: c++ sockets recv


【解决方案1】:

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

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

【讨论】:

  • 是用于检测“接口宕机”的keepalives。我想不会。你能确认一下吗?
  • @SenthilAcs 他们将通过其他方式无法检测到的任何方式检测连接丢失。这包括 Windows 以外的平台上的界面故障。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2019-02-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
相关资源
最近更新 更多