2011-10-06 172 views
0

在一個C++應用程序中(我沒有寫)它使用網絡連接。 在一個循環中,它總是檢查連接是否仍然可用。 如果我拿出LAN電纜,我的應用程序只是因爲發生超時而失敗。 我知道套接字號碼和連接信息。有什麼辦法知道這是一個網絡錯誤?C++中的網絡連接

+0

在Linux上,如果是TCP,你可以嘗試/ proc/net/tcp –

+1

你在什麼操作系統上? – littleadv

+0

Windows和Linux – gln

回答

0

拔下電纜本身並不一定是「網絡錯誤」。如果TCP連接暫時不足以達到TCP連接設置的超時時間,則TCP連接可以在斷開連接時輕鬆生存,這是在您的情況下在套接字上完成的。因此,您可以將超時設置得更低,或者使用其他邏輯來測試底層鏈路(物理接口)的狀態,但實際中很少這樣做,並且通常TCP超時對於大多數用途來說已足夠好。爲什麼它不夠好?

+0

,因爲我想檢測到電纜被拔出,以及其他情況,例如通過對等方關閉連接。 – gln

+1

這就是要點 - 拔掉電纜是一個非常不同的情況,而不是由同伴關閉的連接。在一種情況下,連接仍然有效/打開,而在另一種情況下則不是。 –