Epoll и удаленный 1 -way shutdown

Предположим, что TCP-сокет на локальном хосте Linux находится в состоянии соединения с удаленным хостом. Локальный хост использует epoll_wait для уведомления о событиях в сокете с удаленным хостом.

Если удаленный хост должен был вызвать:

 shutdown(s,SHUT_WR);

на своем подключенном сокете, чтобы указать, что передача завершена, какие события epoll_wait вернет на локальном хосте для своего сокета?

Я предполагаю, что EPOLLIN сделает это. всегда возвращаются, и последующий вызов recv вернет 0, чтобы указать, что удаленная сторона закончила передачу.

А как насчет EPOLLHUP или EPOLLRDHUP? (И в чем разница между этими двумя событиями)?

Или даже EPOLLERR?

Если удаленный хост вызывает «закрыть» вместо «выключение», изменится ли ответ на любой из вышеперечисленных?

11
задан selbie 3 January 2012 в 02:59
поделиться