2010-12-16 20 views
3

未接続のバインドされたDatagramSocketの場合、次の例外で予期せず受信メソッド呼び出し(SO_TIMEOUTが無効)が失敗しました。予期しないSocketExceptionでDatagramSocket.receive()が失敗しました

java.net.SocketException: socket closed 
at java.net.PlainDatagramSocketImpl.receive0(Native Method) 
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136) 
at java.net.DatagramSocket.receive(DatagramSocket.java:712) 

また、私は明示的にソケットを閉じていません。
このエラーは、Windows Server 2008(JRE-6)で発生しました。

DatagramSocket.close()を呼び出しても、同じソケットアドレスで新しいDatagramSocketを再作成することに失敗しました。

エラーの原因を教えていただけますか?

+0

例外の原因となるソースコードを表示してください。 – Thomas

答えて

0

java.net.SocketExceptionが:ソケット はあなたソケットを閉じていることを意味し

を閉じました。

+0

ありがとうございます。しかし、私はDatagramSocketを明示的にクローズしていません。それが予期せぬことです。 – Amarnath

+0

例外はあなたに同意しないでしょうか? – EJP

1

私は同じ問題を抱えています。
ソケットの "closed"と "connectState"フィールドを確認してください。

/* 
* Connection state: 
* ST_NOT_CONNECTED = socket not connected 
* ST_CONNECTED = socket connected 
* ST_CONNECTED_NO_IMPL = socket connected but not at impl level 
*/ 
static final int ST_NOT_CONNECTED = 0; 
static final int ST_CONNECTED = 1; 
static final int ST_CONNECTED_NO_IMPL = 2; 
関連する問題