4

对于未连接和绑定的 DatagramSocket,接收方法调用(禁用 SO_TIMEOUT)意外失败,并出现以下异常。

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 也失败了。

你能告诉我错误的可能原因吗?

4

2 回答 2

1

我遇到了同样的问题。
检查套接字的“关闭”和“连接状态”字段。

/*
 * 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;
于 2011-06-01T11:00:40.310 回答
0

java.net.SocketException:套接字关闭

这意味着已经关闭了套接字。

于 2010-12-17T01:59:48.720 回答