Очистить InputStream (сокета) - PullRequest
1 голос
/ 07 декабря 2011

Некоторые факты:
- Моя заявка является клиентом.
- У меня есть Socket бассейн.
- Несколько Thread s используют этот пул.
- У каждого Thread возможен тайм-аут.
- По истечении времени ожидания Socket возвращается в пул, даже если с сервера не было получено ответа.

Проблема:
По истечении времени ожидания шансы на то, что следующему Thread, использующему это Socket, придется прочитать какое-то старое сообщение (которое было отправлено сервером после возврата сокета).

Вопрос:
Какой самый лучший способ «очистить» InputStream от Socket перед использованием?

1 Ответ

4 голосов
/ 07 декабря 2011

Если ваш протокол ввода-вывода не завершился нормально, лучшее решение - закрыть неисправный канал ввода-вывода, удалить его из пула, открыть новое соединение и добавить его в пул.

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

...