2012-04-24 85 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