Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       listen - слушать соединения на сокете

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <sys/socket.h>

       int listen(int sockfd, int backlog);

ОПИСАНИЕ

       Вызов  listen()  помечает  сокет,  указанный  в  sockfd  как  пассивный, то есть как сокет, который будет
       использоваться для приёма запросов входящих соединений с помощью accept(2).

       Аргумент sockfd является  файловым  дескриптором,  который  ссылается  на  сокет  типа   SOCK_STREAM  или
       SOCK_SEQPACKET.

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

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

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

       EADDRINUSE
              Другой сокет уже слушает на этом же порту.

       EADDRINUSE
              (доменные сокеты Интернета) Сокет, указанный sockfd, ранее не был привязан к адресу и при  попытке
              привязать его к эфемеридному порту, было определено, что все номера в диапазоне эфемеридных портов
              уже используются. Смотрите обсуждение /proc/sys/net/ipv4/ip_local_port_range в ip(7).

       EBADF  Аргумент sockfd не является допустимым файловым дескриптором.

       ENOTSOCK
              Файловый дескриптор sockfd указывает не на каталог.

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

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, 4.4BSD (впервые появились в 4.2BSD).

ПРИМЕЧАНИЯ

       Для принятия соединений должны быть выполнены следующие шаги:

           (1)  Создать сокет с помощью socket(2).

           (2)  Привязать  сокет  к  локальному  адресу  с  помощью  bind(2)  для  того, чтобы к нему можно было
                подключать другие сокеты с помощью connect(2).

           (3)  Подготовиться к приёму входящий подключений и настроить размер очереди  входящих  подключений  с
                помощью listen().

           (4)  Принять подключения с помощью accept(2).

       Поведение  аргумента backlog на TCP-сокетах изменилось в Linux 2.2. Теперь вместо количества неоконченных
       запросов на соединение он задает размер очереди  для  полностью  (completely)  установленных  соединений,
       ожидающих,  пока  процесс  примет  их.  Максимальный размер очереди для неполных сокетов может быть задан
       через  /proc/sys/net/ipv4/tcp_max_syn_backlog.  Когда  разрешено  использование  syncookies,   логический
       максимальный размер отсутствует и эта настройка игнорируется. Подробности см. в tcp(7).

       Если  аргумент  backlog  больше  значения в /proc/sys/net/core/somaxconn, то он молча ограничивается этим
       значением. Начиная с Linux 5.4, значение по умолчанию в этом файле  равно  4096;  в  более  ранних  ядрах
       значение  по  умолчанию  равно  128. До Linux 2.4.25 это ограничение было жестко закодированным значением
       SOMAXCONN со значением 128.

ПРИМЕРЫ

       См. bind(2).

СМОТРИТЕ ТАКЖЕ

       accept(2), bind(2), connect(2), socket(2), socket(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и) Artyom  Kunyov  <artkun@guitarplayer.ru>,  Azamat
       Hackimov   <azamat.hackimov@gmail.com>,   Dmitry   Bolkhovskikh  <d20052005@yandex.ru>,  Katrin  Kutepova
       <blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri  Kozlov  <yuray@komyakino.ru>,
       Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        listen(2)