listen(2)

NUME
listen - ascultă pentru conexiuni pe un soclu

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/socket.h>

int listen(int sockfd, int backlog);

DESCRIERE
listen() marchează soclul la care face referire sockfd ca fiind un soclu pasiv, adică un soclu care va fi utilizat pentru a accepta cereri de conexiune primite utilizând accept(2).

Argumentul sockfd este un descriptor de fișier care se referă la un soclu de tip SOCK_STREAM sau SOCK_SEQPACKET.

Argumentul backlog definește lungimea maximă până la care poate crește coada de conexiuni în așteptare pentru sockfd. În cazul în care o cerere de conexiune sosește când coada este plină, clientul poate primi o eroare cu indicația ECONNREFUSED sau, dacă protocolul de bază acceptă retransmiterea, cererea poate fi ignorată, astfel încât o nouă încercare ulterioară de conectare să reușească.

VALOAREA RETURNATĂ
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

EADDRINUSE
    Un alt soclu este deja ascultat pe același port.

EADDRINUSE
    (Soclurile din domeniul de Internet) Soclul la care se face referire prin sockfd nu a fost asociat anterior unei adrese și, la încercarea de a-l asocia la un port efemer, s-a stabilit că toate numerele de port din intervalul de porturi efemere sunt utilizate în prezent. A se vedea discuția despre /proc/sys/net/ipv4/ip_local_port_range în ip(7).

EBADF
    Argumentul sockfd nu este un descriptor de fișier valid.

ENOTSOCK
    Descriptorul de fișier sockfd nu se referă la un soclu.

EOPNOTSUPP
    Soclul nu este de un tip care să accepte operația listen().

STANDARDE
POSIX.1-2001, POSIX.1-2008, 4.4BSD (listen() a apărut pentru prima dată în 4.2BSD).

NOTE
Pentru a accepta conexiuni, se execută următorii pași:

    (1) Un soclu este creat cu socket(2).

    (2) Soclul este legat la o adresă locală folosind bind(2), astfel încât alte socluri să poată fi conectate la el prin connect(2).

    (3) Cu listen() se specifică disponibilitatea de a accepta conexiuni primite și o limită a cozii de așteptare pentru conexiunile primite.

    (4) Conexiunile sunt acceptate cu accept(2).

Comportamentul argumentului backlog pe socket-urile TCP s-a schimbat odată cu Linux 2.2. Acum, acesta specifică lungimea cozii de așteptare pentru soclurile complet stabilite care așteaptă să fie acceptate, în loc de numărul de cereri de conexiune incomplete. Lungimea maximă a cozii de așteptare pentru socluri incomplete poate fi stabilită cu /proc/sys/net/ipv4/tcp_max_syn_backlog. Atunci când sunt activate „syncookies”, nu există o lungime maximă logică și această valoare este ignorată. Pentru mai multe informații, consultați tcp(7).

În cazul în care argumentul backlog este mai mare decât valoarea din /proc/sys/net/core/somaxconn, atunci acesta este limitat în mod silențios la această valoare. Începând cu Linux 5.4, valoarea implicită din acest fișier este 4096; în nucleele anterioare, valoarea implicită este 128. Înainte de Linux 2.4.25, această limită era o valoare codificată în mod rigid, SOMAXCONN, cu valoarea 128.

EXEMPLE
A se vedea bind(2).

CONSULTAȚI ȘI
accept(2), bind(2), connect(2), socket(2), socket(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.