Я создаю неблокирующий сокет, а затем используйте epoll
для управления сокетом. Я не устанавливаю таймаут на epoll_wait
. Но я нахожу, что epoll
вернулись с 5 до 10 секунд, затем я проверил с getsockopt
по адресу SO_ERROR
, время ожидания подключения. Почему тайм-аут за столь короткое время?Почему epoll_wait(), получить возврат и время соединения TCP в 5s ~ 10s
Я пытаюсь использовать инструменты для ограничения пакетов TCP. Сценарий выглядит следующим образом:
Когда мой клиент отправляет SYN
для подключения к серверу. Но сервер не может отправить обратно ACK
с 5 до 10 секунд. Затем возвращается epoll_wait
. и проверьте с помощью SO_ERROR
. Я получаю EIMTEDOUT
.
Я просто не могу понять, почему тайм-аут так короток с 5 до 10 секунд. Является ли проблема моего клиента или является epoll
?
+1 - 5-10 секунд действительно очень короткий для таймаута соединения. Например, если ссылка содержит модем коммутируемого доступа, соединение всегда будет терпеть неудачу с таким коротким таймаутом. Я хотел бы знать, почему это происходит. –
Я не знаю, почему. Я просто использую libev. описание выше - это именно то, что делает libev на C++. Я просто нахожу, что libev возвращает ETIMEDOUT за столь короткое время. – hyman