对于未连接和绑定的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也会失败。
您能告诉我这个错误的可能原因吗?
发布于 2011-06-01 19:00:40
我也遇到过同样的问题。
检查套接字的"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;发布于 2010-12-17 09:59:49
java.net.SocketException:套接字已关闭
这意味着您已经关闭了套接字。
https://stackoverflow.com/questions/4463556
复制相似问题