Может ли кто-нибудь объяснить следующее поведение в сокетах Java:
Общая идея такова:
- Открыть сокет, получить потоки ввода / вывода.
- Записьзапрос, закрытие потока
- чтение ответа, закрытие в потоке
- закрытие сокета.
Вот мой вопрос / проблема.
Если я используюPrintWriter
для вывода, а затем закройте его. Он закрывает весь сокет, и последующая операция чтения терпит неудачу.
Вместо этого, если я напрямую использую метод сокета shutdownOutput()
, он корректно закрывает выходной потокканал, сохраняя при этом сокет живым.
Зачем закрывать объект PrintWriter
, если он сократит весь сокет?