我正在尝试使用 sendUrgentData() void来确定连接是否仍处于活动状态。通过此void发送的数据将在服务器端被忽略,但是当连接丢失时,sendUrgentData会在客户端抛出SocketException。
这是怎么回事。 但是,在多次调用sendUrgentData之后,当连接仍然完全存活时,似乎断开并抛出SocketException:
java.net.SocketException: Connection reset by peer: send
我用嗅探器检查了网络流量,发现重置数据包从未发送过。 我该怎么解决这个问题?我试图避免以正常方式发送此数据,以避免破坏当前流中的数据。
答案 0 :(得分:1)
发送的数据不会被忽略,如果是用Java编写的,它将由服务器内联读取。所以你可能会导致协议错误。通过对等方重置连接意味着您已写入已由对等方关闭的连接...可能是为了响应协议错误。
答案 1 :(得分:0)
Socket#sendUrgentData()
将抛出SocketException
。从内存中,Java 1.6上的套接字异常消息描述类似于“不支持紧急数据”。
您在运行什么平台(Windows,Linux等)?
您使用的是哪个版本的Java?