как сообщить клиенту tcp о завершении работы сервера - PullRequest
0 голосов
/ 14 марта 2012

Используя неблокирующее (20 мс цикл) TCP-соединение в Linux, у меня возникла проблема:

  • когда я закрываю сокет со стороны сервера [close (sd) или shutdown (sd, 2); close (sd)], клиентский опрос () не получает событие POLLHUP.

  • когда сервер убит из оболочки, получен POLLHUP.

Как я могу сообщить клиенту за один или два цикла?

1 Ответ

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

Разъединение TCP сигнализируется с помощью POLLIN, и read () вернет 0 в случае постепенного завершения работы, или -1 и соответствующую ошибку (ошибочно является чем-то иным, кроме EINTR / EWOULDBLOCK).

Существуют платформы, на которых это может сигнализироваться с помощью POLLHUP, поэтому вы можете также обработать этот случай.

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