Я ничего не понял о somaxconn в программировании сокетов в C (Linux Ubuntu). Я искал несколько сайтов, но все это не могло мне помочь.
listen(sockfd,SOMAXCONN);
Означает ли это, что одновременно слушать максимум. подключенных сокетов?
Я ничего не понял о somaxconn в программировании сокетов в C (Linux Ubuntu). Я искал несколько сайтов, но все это не могло мне помочь.
listen(sockfd,SOMAXCONN);
Означает ли это, что одновременно слушать максимум. подключенных сокетов?
#include <sys/socket.h>
int listen (int socket, int backlog);
Аргумент backlog предоставляет намек на реализацию, которую реализация должна использовать для ограничения количества незавершенных подключений в очереди прослушивания сокетов. Реализации могут налагать ограничение на отставание и молча уменьшить указанное значение. Как правило, большее значение аргумента backlog должно приводить к большей или равной длине очереди прослушивания. Реализации должны поддерживать значения отставания до
SOMAXCONN
, определенные в<sys/socket.h>
.Если
listen()
вызывается с значением аргумента backlog, которое меньше 0, функция ведет себя так, как если бы он был вызван с значением аргумента backlog 0.Аргумент backlog из 0 может разрешить сокету принимать соединения, и в этом случае длина очереди прослушивания может быть установлена на минимальное значение, определенное реализацией.
Как видно здесь.
Проще говоря, отставание - это максимальное количество подключенных к очереди соединений в сокете. Эта очередь существует, поэтому вы можете обрабатывать соединение с клиентом, в то время как другие ждут в очереди, backlog указывает, как долго вы хотите эту строку быть. если большее количество клиентов попытается подключиться к вашему серверу, больше, чем отставание, эти соединения будут удалены.
SOMAXCONN
определяет максимальное число, которое вам разрешено передавать в listen()
, который 128
в моей системе.
Подробнее об этом можно прочитать в странице руководства