2

我正在尝试使用sendUrgentData() void 来确定连接是否仍然存在。通过这个 void 发送的数据将在服务器端被忽略,但是当连接丢失时,sendUrgentData 在客户端抛出一个 SocketException。

这是应该的。但是,在多次调用 sendUrgentData 后,它似乎断开连接并在连接仍然完全活跃时抛出 SocketException:

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

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

4

2 回答 2

1

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

于 2011-04-28T23:33:09.543 回答
0

Socket#sendUrgentData()SocketException如果底层实现不支持发送紧急数据,将抛出一个。从内存来看,Java 1.6 上的套接字异常消息描述类似于“不支持紧急数据”。

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

  • 您使用的是什么版本的 Java?

于 2011-04-27T22:01:15.010 回答