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