在桌面網絡應用程序後無法使用在發送數據的DatagramSocket有時exceptiption發生:
java.net.SocketException: No buffer space available (maximum connections reached?): Datagram send failed
後這個異常插座是完全不可用的:它不收到任何東西,併發送()無限期掛起。重現測試是一個簡單的應用程序(創建套接字,綁定,而(真正的)發送();)
我只能在機器進入睡眠模式,然後回來時在Windows上100%的情況下重複此行爲處於「密集數據流」的中間。
的問題是:
- 是這種行爲正常的BSD套接字 - 錯誤後能得到無法使用?或者它是一種WSA錯誤?
- 有什麼辦法可以將錯誤的套接字「重置」到工作狀態或重新打開套接字是唯一的解決方案嗎?
- 是否有可能在捕獲異常後將這些條件與常規I/O錯誤(即可恢復錯誤)區分開來?
- 是否有任何一般性指導/就當我重新打開應用插座建議(我的意思是:網絡地址改變,PC休眠/喚醒和其他活動)
謝謝! :)
我已經在9月份重複了這個測試,並且...... heh ..異常仍然發生,但它不會使套接字不再可用。即它可以被忽略並且套接字上的通信可以繼續。我在這期間發現了我的Win7中的幾個大的更新,所以可能MS的人已經修復了WSA中的一些東西... – tuxSlayer