Какое значение отставания следует использовать?

Я прочитал man 2 listen.

Я не понимаю, что такое значение отставания, он говорит

Аргумент backlog определяет максимальную длину, до которой может вырасти очередь ожидающих соединений для sockfd.

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

Спасибо


person mathieug    schedule 03.04.2012    source источник
comment
возможный дубликат параметра невыполненной работы сокета , как определить это значение?   -  person caf    schedule 04.04.2012


Ответы (2)


По сути, отставание listen() влияет на то, сколько входящих подключений может стоять в очереди, если ваше приложение не accept() обрабатывает подключения сразу после их поступления. Для большинства приложений это не особенно важно. Максимальное значение, используемое большинством систем, равно 128, и его прохождение, как правило, безопасно.

person Community    schedule 03.04.2012
comment
Хорошо, если я listen(sockfd, 5), должен ли я проверить в моем accept() (в моем бесконечном цикле), если current_nb_client < 5, чтобы отправить сообщение об ошибке моему клиенту, или я могу доверять отставанию и обрабатывать это на стороне клиента? - person mathieug; 04.04.2012
comment
Нет, в этом нет необходимости — пока вы принимаете соединения, как только они приходят, длина вашего ожидания прослушивания не имеет значения. Вы можете иметь столько активных подключений, сколько вам нужно; отставание прослушивания влияет только на соединения, которые не были полностью установлены. - person ; 04.04.2012
comment
О, я только что понял! Я думал, что они не исчезают из очереди. Но нет! Это ожидающая очередь, и мне достаточно accept() каждого, и они исчезнут из очереди. - person mathieug; 04.04.2012

Это борьба между клиентами, пытающимися подключиться. помещая запросы на прием в очередь, а потоки приема отсасывают их. Обычно побеждают нити. Я обычно ставлю 32, но обычно это не важный параметр.

person Martin James    schedule 03.04.2012
comment
Хорошо, если я listen(sockfd, 5), должен ли я проверить в моем accept() (в моем бесконечном цикле), если current_nb_client < 5, чтобы отправить сообщение об ошибке моему клиенту, или я могу доверять отставанию и обрабатывать это на стороне клиента? - person mathieug; 04.04.2012
comment
Попытка подключения будет отклонена, если очередь заполнена, но это настолько маловероятно, что об этом стоит забыть. Должна быть небольшая очередь, чтобы покрыть те случаи, когда просто случается, что много запросов на подключение поступает в пакете, но в целом современные процессоры/память/ОС/что-то еще легко могут не отставать от загруженных сетей. - person Martin James; 04.04.2012