我有一段代碼將一個實現ping命令的代碼作爲更大代碼的一部分。一小時後PING超時
下面是這種情況:
- 潤平用 「-c」 或 「-t」 選項。
- 隨後通過Ctrl + C終止
- 大約一個小時後,我發現ping失敗。
這裏是 「插座」 呼叫: 襪子=插座(IP_AF_INET,IP_SOCK_RAW,IP_IPPROTO_ICMP);
在調用recvfrom之前,套接字被設置爲1秒的超時值。 當ping失敗時,我觀察到errno被設置爲EAGAIN。
我嘗試了一些測試,我相信它是由一個按Ctrl + C時沒有被關閉的套接字造成的。
我的問題是:如果我沒有像上面提到的場景那樣關閉套接字,我可以面對什麼問題?
管理運行一些更多的測試,似乎在一個小時後ping失敗的初始診斷是不正確的。如果我打開了10個ICMP套接字,現在可以ping通了。當我有10個ICMP套接字打開時,同時ping errno EAGAIN失敗。 現在:是否有限制沒有。可以同時打開的ICMP套接字? 另外:有什麼辦法可以回收他們? – Zshn 2012-03-23 03:40:25