Ваша проблема в том, что вы не закрываете Socket
в клиенте, "Сброс соединения" обычно генерируется, когда удаленный Socket
незаметно закрыл соединение, что имеет место в данном случае, так как вы не звоните Socket.close()
.Если вы это сделаете, вы заметите, что это сработает, но вы, вероятно, думаете хорошо, почему это исправляет?Почему бы просто не дать мне данные, тогда при следующем прочтении скажите, что Socket
закрылся, что ж, да, но так как вы используете readLine()
, который постоянно читает, пока не получит \n
или \r
или, если данный InputStream
возвращает меньше нуля в read
.В значительной степени он читает до тех пор, пока не получит полную строку (для объявления полной строки, например, System.out.println
, вы просто добавляете \n
в конце), и ему еще предстоит найти новую строку, если вы добавите \n
в конце сообщения вы заметите, что оно также будет работать.
Кроме того, удалите PrintWriter
, вы никогда его не используете.
ВСЕГДА ЗАКРЫВАЙТЕ РОЗЕТКУ .