параметр прослушивания сокета прослушивания, как определить это значение? - PullRequest
34 голосов
/ 22 сентября 2008

Как мне определить, что использовать для параметра backlog прослушивающего сокета? Является ли проблемой просто указать очень большое число?

Ответы [ 4 ]

32 голосов
/ 22 сентября 2008

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

4 голосов
/ 22 сентября 2008

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

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

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

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

Из документов :

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

0 голосов
/ 22 сентября 2008

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

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