Java void sendUrgentData()抛出SocketException

时间:2011-04-27 20:46:32

标签: java sockets reset socketexception

我正在尝试使用 sendUrgentData() void来确定连接是否仍处于活动状态。通过此void发送的数据将在服务器端被忽略,但是当连接丢失时,sendUrgentData会在客户端抛出SocketException。

这是怎么回事。 但是,在多次调用sendUrgentData之后,当连接仍然完全存活时,似乎断开并抛出SocketException:

java.net.SocketException: Connection reset by peer: send

我用嗅探器检查了网络流量,发现重置数据包从未发送过。 我该怎么解决这个问题?我试图避免以正常方式发送此数据,以避免破坏当前流中的数据。

2 个答案:

答案 0 :(得分:1)

发送的数据不会被忽略,如果是用Java编写的,它将由服务器内联读取。所以你可能会导致协议错误。通过对等方重置连接意味着您已写入已由对等方关闭的连接...可能是为了响应协议错误。

答案 1 :(得分:0)

如果底层实现不支持发送紧急数据,

Socket#sendUrgentData()将抛出SocketException。从内存中,Java 1.6上的套接字异常消息描述类似于“不支持紧急数据”。

  • 您在运行什么平台(Windows,Linux等)?

  • 您使用的是哪个版本的Java?

相关问题