【问题标题】:About socket connection timeout in C++ (UNIX)关于 C++ (UNIX) 中的套接字连接超时
【发布时间】:2012-04-24 13:53:47
【问题描述】:

我一直在努力为套接字设置 15 秒的超时时间,以避免它被阻塞。所以我将它配置为非阻塞,然后使用选择功能,并且工作正常......当计算机连接到网络时!

如果计算机与网络断开连接(例如,如果 Wi-Fi 信号关闭,或者如果您拔下以太网插头),当我调用连接函数时,它会立即返回“网络无法访问”错误。

如果发生这种情况,我有一个循环让它重新连接,它会尝试连接很多次,所以我得到了千兆字节的日志文件。

所以,我也想要为此设置某种超时。这实际上不是超时,但我希望它等待 15 秒,直到它再次尝试连接以避免这个问题。当我认为我在第 1 段中解释的设置的超时也可以解决这个问题时,我错了。那我该怎么做呢?

【问题讨论】:

  • 睡15秒怎么样?

标签: c++ sockets unix


【解决方案1】:

如果是ENETUNREACH,您可以测试errnosleep

【讨论】:

  • 天啊……这个答案让我觉得自己很愚蠢:(。我想这是真的,谢谢!
  • 它是 POSIX.1-2001 的一部分,也可能是旧标准的一部分。
  • 你可以设置select()的超时参数为15秒!?
猜你喜欢
  • 1970-01-01
  • 2011-02-05
  • 2015-11-14
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多