2016-03-04 3 views
0

Я пишу программу, которая общается через веб-сокеты и отправляет сериализованные объекты. У меня проблема в ситуации, когда связь между сервером и клиентом теряется. Я получаю это исключение:Сброс websocket

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(), чтобы проверить, если сервер должен отказаться от этого клиента, он возвращает истину (почему?), Даже после того, как вновь закрыть сокет и открыть его по-прежнему открыт , Что мне делать?

ответ

0

Существует несколько возможных причин, но наиболее распространенными являются то, что вы написали на соединение, которое уже было закрыто одноранговым узлом, или что сверстник закрыл соединение, пока он все еще имел ожидающие данные для чтения. Оба являются ошибками протокола приложения.

Socket.isConnected() рассказывает о состоянии гнезда. Не соединение.