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