Документация по LinuxLinuxDoc.Ru 🔍

listen - прослушивает соединения на сокете

НАЗВАНИЕ
listen - прослушивает соединения на сокете

СИНТАКСИС
#include

int listen(int s, int backlog);

ОПИСАНИЕ
Для того, чтобы принимать соединения, сначала необходимо
создать сокет с помощью функции socket(2), затем показать
готовность принимать соединения и задать лимит входящих
соединений с помощью listen, и только после этого
принимать соединения с помощью accept(2). Системный вызов
listen посылается только к сокетам типа SOCK_STREAM или
SOCK_SEQPACKET.

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

ЗАМЕЧАНИЯ
Начиная с версии Linux 2.2, поведение параметра backlog на
TCP-сокетах изменилось. Теперь вместо числа неоконченных
запросов он определяет очередь полностью установленных
сокетов, ожидающих, пока процесс примет их. Максимальная
длина очереди сокетов, установленных не полностью, может
быть задана параметром tcp_max_syn_backlog с помощью
sysctl. Когда разрешено использование syncookies,
логическая максимальная длина не указана и этот параметр,
установленный sysctl, игнорируется. Для более подробной
информации смотрите tcp(7).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном завершении вызова возвращаемое значение равно
нулю. В случае ошибки возвращается -1, и переменной errno
присваивается номер ошибки.

КОДЫ ОШИБОК
EADDRINUSE
Другой сокет уже привязан к этому порту.

EBADF Параметр s не является правильным описателем.

ENOTSOCK
Параметр s не является сокетом.

EOPNOTSUPP
Тип сокета не поддерживает операцию listen.

СООТВЕТСТВИЕ СТАНДАРТАМ
Single Unix, 4.4BSD, POSIX 1003.1g draft. Впервые
системный вызов listen появился в 4.2BSD.

НАЙДЕННЫЕ ОШИБКИ
Если сокет имеет тип AF_INET, а аргумент backlog больше,
чем константа SOMAXCONN (128 в Linux 2.0 и 2.2), то он
"обрезается" до SOMAXCONN. Не полагайтесь на это значение
при создании переносимых в другие системы приложений,
потому что BSD (и некоторые её потомки) ограничивает
размер очереди до 5.
Читать новости Linux в Telegram
Linux - listen - прослушивает соединения на сокете
Мы в соцсетях ✉