2012-04-24 34 views
0

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

如果计算机与网络断开(例如,如果Wi-Fi信号被关闭,或者如果您触摸以太网插头),则当我调用connect函数时,它将返回“Network is unreachable”错误。

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

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

+2

刚睡15秒怎么样? – 2012-04-24 13:56:38

回答

2

如果是ENETUNREACH,您可以测试errnosleep

+0

唉......这个答案让我感到很蠢:(我猜这是真的,谢谢! – 2012-04-24 13:58:30

+0

不管怎样,是不是睡眠是Windows库的一部分,而不是unix? – 2012-04-24 13:58:55

+0

它是POSIX.1-2001的一部分, – 2012-04-24 13:59:40