java - DatagramSocket.receive() 因意外的 SocketException 而失败

标签 java socketexception

对于未连接和绑定(bind)的 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 也失败了。

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

最佳答案

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

/*
 * 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;

关于java - DatagramSocket.receive() 因意外的 SocketException 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4463556/

相关文章:

java - 黑莓机中的 HTTP POST

java - 使用 Apache CXF DOSGi 进行身份验证和 session 管理

java - GAE - 删除对象后列表不持久(DataNucleus 和 JDO)

java - Ubuntu 服务器中出现 OutOfMemory 错误

c# - 目标机主动拒绝导致无法连接?

android - Android 中的 Web 服务异常(java.net.SocketException 权限被拒绝)

java - 有没有Java不立即初始化静态字段的情况?

linux - Camel 2.15.2/netty3 : "java.net.SocketException: Invalid argument" from DatagramChannelImpl. send0()

Android 应用程序上的 Java 套接字异常,需要帮助吗?

java.net.SocketException : Connection reset by peer: socket write error When serving a file 异常