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

StackOverflow https://stackoverflow.com/questions/114874

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top