DatagramSocket.receive()失败并出现意外的SocketException
问题描述:
对于未连接和绑定的DatagramSocket,接收方法调用(禁用SO_TIMEOUT)会因以下异常而意外失败。DatagramSocket.receive()失败并出现意外的SocketException
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)
另外我还没有明确地关闭套接字。
在带有JRE-6的Windows Server 2008中发生此错误。
即使在调用DatagramSocket.close()时,在同一套接字地址上重新创建一个新的DatagramSocket也失败了。
您能否让我知道错误的可能原因?
答
我遇到了同样的问题。
检查套接字的“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;
请向我们显示您的源代码,导致例外,请。 – Thomas 2010-12-16 18:11:36