Подтвердить что ты не робот

Параметр сокета прослушивания сокетов, как определить это значение?

Как определить, что использовать для параметра backlog для прослушивания? Не стоит ли просто указывать очень большое число?

4b9b3361

Ответ 1

Из docs:

Значение для отставания SOMAXCONN - это специальная константа, которая инструктирует основного поставщика услуг, ответственного за сокет s, установить максимальную допустимую величину длины ожидающих соединений.

Ответ 2

Там очень длинный ответ на этот вопрос в часто задаваемые вопросы Winsock Programmer. В нем подробно описывается стандартная настройка, а функция динамического отставания добавлена ​​в исправление для NT 4.0.

Ответ 3

Я использую SOMAXCONN, если у вас нет конкретной причины использовать короткую очередь.

Имейте в виду, что если в очереди нет нового соединения, RST не будет отправлено, что позволит клиенту автоматически продолжить попытку подключения путем повторной передачи SYN.

Кроме того, аргумент backlog может иметь разные значения в разных реализациях сокетов.

  • В большинстве случаев это означает размер полуоткрытой очереди подключений, в некоторых это означает размер завершенной очереди соединений.
  • Во многих реализациях аргумент backlog будет умножаться, чтобы получить другую длину очереди.
  • Если задано значение, которое слишком велико, все реализации будут равномерно обрезать значение до максимальной длины очереди.

Ответ 4

В качестве предупреждения для любого, кто использует boost asio, значение SOMAXCONN используется как 5 с boost.