問題JavaのソケットのDatagramSocketにデータを送信すると、デスクトップのネットワーク・アプリケーションで例外
後に使えなく取得時々exceptiptionが発生します。この例外ソケットが完全に使用不可能である
java.net.SocketException: No buffer space available (maximum connections reached?): Datagram send failed
後:それはないありません何かを受け取り、send()は無期限にハングします。
この動作は、マシンがスリープモードに移行して戻ってくるときに、Windows上でのみ100%のケースで繰り返すことができます(このソケットは、 "集中的なデータフロー"の途中で。
質問はです:
- は、BSDソケットの通常この動作です - エラーの後に使えなく取得するには?それともWSAバグの一種ですか?
- 故障したソケットを動作状態に「リセット」する方法はありますか?またはソケットを再オープンする方法は唯一の方法ですか?
- 例外をキャッチした後、通常のI/Oエラー(つまり回復可能なもの)とそのような条件を区別することは可能ですか?
- 任意の一般的なガイダンス/アドバイスは、(私は意味:ネットワークアドレスは、PCのスリープ/ウェイクアップし、他のイベントを変更)私はアプリケーションでソケットを再開するものとするときにあります
ありがとう! :)
このテストは今、9月に繰り返されていますが、... heh ..例外は引き続き発生しますが、ソケットが使用できなくなることはありません。私。無視してソケット上の通信を進めることができます。私はこの時間中に私のWin7でいくつかの大きなアップデートを見つけました。おそらくMSの人はWSAで何かを修正しました... – tuxSlayer