关于C ++中的套接字连接超时(UNIX)

时间:2012-04-24 13:53:48

标签: c++ sockets unix

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

如果计算机与网络断开连接(例如,如果关闭了Wi-Fi信号,或者您移动了以太网插头),当我呼叫连接功能时,它会立即返回“网络无法访问”错误。

由于我有一个循环来重新连接它,如果发生这样的事情,它试图连接多次,所以我得到千兆字节的日志文件。

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

1 个答案:

答案 0 :(得分:2)

您可以测试errnosleep,如果它是ENETUNREACH