重置websocket

时间:2016-03-04 19:29:07

标签: java sockets web websocket

我正在编写通过Web套接字进行通信并发送序列化对象的程序。当服务器和客户端之间的连接丢失时,我遇到问题。我得到了这个例外:

java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1877)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1786)
at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1286)
at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1231)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1427)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1577)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:351)
at common.WebSocketServer.sendResponse(WebSocketServer.java:103)
at common.WebSocketServer.listen(WebSocketServer.java:86)
at common.WebSocketServer.main(WebSocketServer.java:50)

当我使用方法socket.isConnected()来检查时,如果服务器应该放弃这个客户端,它返回true(为什么?),即使关闭套接字并再次打开它仍然打开。我该怎么办?

1 个答案:

答案 0 :(得分:0)

有几种可能的原因,但最常见的是您已写入已由对等方关闭的连接,或者对等方仍关闭连接,同时仍有待读取的待处理数据。两者都是应用程序协议错误。

Socket.isConnected()告诉您套接字的状态。不是连接。