我一直在努力将一个15秒的超时时间放到套接字上以避免它被阻止。所以我把它配置为非阻塞,然后使用选择功能,并且工作正常......当计算机连接到网络时!
如果计算机与网络断开连接(例如,如果关闭了Wi-Fi信号,或者您移动了以太网插头),当我呼叫连接功能时,它会立即返回“网络无法访问”错误。
由于我有一个循环来重新连接它,如果发生这样的事情,它试图连接多次,所以我得到千兆字节的日志文件。
所以,我想要的是为它设置某种超时。它实际上不是超时,但我希望它等待15秒,直到它再次尝试连接以避免此问题。当我认为我在第1段中解释的设置超时时,我错了。我怎么能这样做呢?
答案 0 :(得分:2)
您可以测试errno
和sleep
,如果它是ENETUNREACH
。