listen

LISTEN(2)       Ð ÑководÑÑво пÑогÑаммиÑÑа Linux       LISTEN(2)



ÐÐЯ
       listen - ÑлÑÑаÑÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ÑокеÑе

ÐÐÐÐÐ
       #include <sys/types.h>          /* СмоÑÑиÑе ÐÐÐÐЧÐÐÐЯ */
       #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-2001, POSIX.1-2008, 4.4BSD (вÑзов listen() впеÑвÑе
       поÑвилÑÑ Ð² 4.2BSD).

ÐÐÐÐЧÐÐÐЯ
       ÐÐ»Ñ Ð¿ÑинÑÑÐ¸Ñ Ñоединений Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ
       вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ ÑледÑÑÑие Ñаги:

           1.  СоздаÑÑ ÑÐ¾ÐºÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ socket(2).

           2.  ÐÑивÑзаÑÑ ÑÐ¾ÐºÐµÑ Ðº локалÑÐ½Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ Ñ
               помоÑÑÑ bind(2) Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ðº немÑ
               можно бÑло подклÑÑаÑÑ Ð´ÑÑгие ÑокеÑÑ Ñ
               помоÑÑÑ connect(2).

           3.  ÐодгоÑовиÑÑÑÑ Ðº пÑиÑÐ¼Ñ Ð²ÑодÑÑий
               подклÑÑений и наÑÑÑоиÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÑеÑеди
               вÑодÑÑÐ¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑений Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ listen().

           4.  ÐÑинÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ accept(2).

       Ð POSIX.1 не ÑÑебÑеÑÑÑ Ð²ÐºÐ»ÑÑение <sys/types.h>, и ÑÑоÑ
       заголовоÑнÑй Ñайл не ÑÑебÑеÑÑÑ Ð² Linux. Ðднако,
       Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ ÑÑаÑÑÑ ÑеализаÑий (BSD) ÑÑебÑеÑ
       даннÑй Ñайл, и в пеÑеноÑимÑÑ Ð¿ÑиложениÑÑ Ð´Ð»Ñ
       пÑедоÑÑоÑожноÑÑи, веÑоÑÑно, лÑÑÑе его ÑказаÑÑ.

       Ðоведение аÑгÑменÑа backlog на TCP-ÑокеÑаÑ
       изменилоÑÑ Ð² Linux 2.2. ТепеÑÑ Ð²Ð¼ÐµÑÑо
       колиÑеÑÑва неоконÑеннÑÑ Ð·Ð°Ð¿ÑоÑов на
       Ñоединение он Ð·Ð°Ð´Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÑеÑеди длÑ
       полноÑÑÑÑ (completely) ÑÑÑановленнÑÑ Ñоединений,
       ожидаÑÑиÑ, пока пÑоÑеÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¸Ñ.
       ÐакÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÑеÑеди Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾Ð»Ð½ÑÑ
       ÑокеÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½ ÑеÑез
       /proc/sys/net/ipv4/tcp_max_syn_backlog. Ðогда ÑазÑеÑено
       иÑполÑзование syncookies, логиÑеÑкий
       макÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÑÑÑÑÑÑвÑÐµÑ Ð¸ ÑÑа наÑÑÑойка
       игноÑиÑÑеÑÑÑ. ÐодÑобноÑÑи Ñм. в tcp(7).

       ÐÑли знаÑение аÑгÑменÑа backlog болÑÑе, Ñем
       знаÑение /proc/sys/net/core/somaxconn, Ñо он без
       пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð±ÑезаеÑÑÑ Ð´Ð¾ ÑÑой велиÑинÑ;
       знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð² данном Ñайле
       Ñавно 128. Ð ÑдÑÐ°Ñ Ð´Ð¾ веÑÑии 2.4.25, ÑÑÐ¾Ñ Ð¿Ñедел
       ÑказÑвалÑÑ Ð² конÑÑанÑе SOMAXCONN и имел
       знаÑение 128.

ÐÐ ÐÐÐÐ
       См. bind(2).

СÐÐТРÐТРТÐÐÐÐ
       accept(2), bind(2), connect(2), socket(2), socket(7)



Linux                             2016-03-15                         LISTEN(2)