почему netty не может сделать различие между сокетом close и сокетом half close - PullRequest
0 голосов
/ 08 марта 2012

У меня возникла проблема с интересом: когда я закрываю (OIO) выходной поток сокета наполовину закрытым способом, Netty-сервер обнаруживает событие и запускает метод ChannelClose в обработчике, но на стороне клиента сокет открыт и подключен, затем я завершаюзакройте сокет в клиенте, но на этот раз сервер Netty не получит отражения.

не очень ли странно?

1 Ответ

3 голосов
/ 09 марта 2012

Никто не может отличить.Отключение на выходе отправляет FIN.Close отправляет FIN, если он еще не был отправлен, т.е.FIN появляется на приемнике как условие EOS (EOF).Сервер получил FIN от завершения работы, увидел, что EOS закрыл сокет, ваш клиент получил FIN, увидел, что EOS закрыл сокет и отправил ... ничто на сервер, потому чтоFIN уже отправлено.

...