Java сокет проблемы с половиной закрытия - PullRequest
4 голосов
/ 02 сентября 2010

Я использую JDK 1.3 (платформа BD-J) с использованием сокетов tcp.

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

Попытка отладки на сервере, не могу ли я прочитать все, что отправляет клиент, даже если сокет закрыт? Просто используя входной поток низкого сокета на стороне сервера. Если я запускаю его как обычно, я получаю большинство сообщений, при попытке запустить сервер в отладчике я получаю 1 сообщение, а затем Socket Exception Connection Reset.

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

http://pastie.org/private/cwc5uijl1x2ndwjwsun4lg

Действительно расстроен, что не могу найти проблему

1 Ответ

7 голосов
/ 02 сентября 2010

Вам нужно Socket.shutdownOutput. Закрытие либо InputStream, либо OutputStream из Socket закрывает Socket (безумно, но верно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...