В соответствии со страницей руководства для recv()
, errno
устанавливается на EAGAIN
или EWOULDBLOCK
, если для приема был установлен тайм-аут с использованием setsockopt(SO_RCVTIMEO)
.
Мой вопрос: что произойдет, если несколько таких сокетов используются с select()
. Выбрал бы возврат, если один из сокетов истекает из-за неактивности. Что будет возвращено select()
.
Я пытаюсь реализовать tftp-сервер с функцией обнаружения тайм-аутов. Одним из способов может быть использование тайм-аута с select()
, но тогда мне придется использовать разные значения тайм-аута для каждого сокета и постоянно обновлять таймер до минимального значения, а затем делать еще какие-то манипуляции .... и т.д .. и т. д. Просто хочется много лишней работы.
PS. Сервер tftp - это параллельный сервер с несколькими клиентами, которые обрабатываются с использованием мультиплексирования ввода / вывода.