Provided by: manpages-ru_0.98-4_all bug

ИМЯ

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

ОБЗОР

       #include <sys/socket.h>

       int listen(int s, int backlog);

ОПИСАНИЕ

       Для  того,  чтобы  принимать  соединения, сначала нужно создать сокет с помощью socket(2),
       затем выразить готовность принимать входящие соединения и задать размер очереди с  помощью
       listen,  а  затем  вызывать accept(2) по мере появления новых соединений.  Системный вызов
       listen применим только к сокетам типа SOCK_STREAM или SOCK_SEQPACKET.

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

ЗАМЕЧАНИЯ

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

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

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

ОШИБКИ

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

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

       ENOTSOCK
               Аргумент s не является сокетом.

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

СООТВЕТСТВИЕ СТАНДАРТАМ

       Single Unix, 4.4BSD, черновик POSIX 1003.1g. Вызов listen впервые появился в 4.2BSD.

ОШИБКИ РЕАЛИЗАЦИИ

       Если  сокет  имеет  тип AF_INET, а аргумент backlog больше, чем константа SOMAXCONN (128 в
       Linux 2.0 & 2.2), то он незаметно обрезается до SOMAXCONN.  Не полагайтесь на это значение
       в  портабельных  приложениях,  потому  что  BSD и некоторые её потомки ограничивают размер
       очереди до 5.

СМОТРИ ТАКЖЕ

       accept(2), connect(2), socket(2)

ПЕРЕВОД

       Copyright   (C)   Alexey   Mahotkin   <alexm@hsys.msk.ru>    1999,    Виктор    Вислобоков
       <corochoone@perm.ru> 2003