listen
Functia listen asteapta cereri de conectare la un socket
specificat.
Sintaxa
int listen (
SOCKET s,
int backlog
);
unde:
s - [in] este un descriptor de socket legat dar neconectat.backlog - [in] Lungimea maxima pana la care coada de cereri de
conectare poate creste. Daca aceasta valoarea este SOMAXCONN,
atunci furnizorul de serviciu responsabil pentru socketul s va fixa backlog
la o valoarea rezonabila maxima.Pentru a accepta conexiuni, un socket este mai intai creat cu functia socket,
o valoare backlog pentru cererile de conexiuni este specificata cu functia
listen si apoi conexiunile sunt acceptate cu functia accept. Functia listen se
foloseste numai pentru socketuri orientate pe conexiune, de exeamplu, acelea ar
caror tip este SOCK_STREAM. Socketul s este trecut in modul pasiv in care
cererile de conectare sunt confirmate si stau la coada de asteptate pentru a fi
acceptate de catre proces (aplicatie). Aceasta functie este utilizata de regula
de catre servere care pot avea mai mult de o cerere de conectare la un moment
dat: Daca o cerere de conectare soseste cand coada de asteptare este plina,
clientul va primii o eroare cu o indicatie WSAECONNREFUSED.
Functia listen incearca sa funtioneze corect si atunci cand nu mai sunt
disponibile descriptori. Functia listen() va accepta conectari pana cand coada de
asteptarese goleste. Daca descriptorii devin disponibili, un apel ulterior al
functiei listen() sau accept() va reumple coada de asteptare pana la valoarea cea
mai recenta a backlog, daca este posibil, si reia ascultarea pentru
cererile de conectare.
O aplicatie poate apela listen() mai mult de o singura data pentru un singur
socket. Aceasta are efectul de aducere la zi a valorii backlog pentru socketul
de ascultare. Se poate intampla ca lungimea actuala a cozii de asteptare sa fie
mai mica decat noua valoare a backlog, cererile de conexiuni in exces vor fi
resetate si inlaturate.
Parametrul backlog este linitat (in mod tacit) la o valoare rezonabila determinata de furnizorul de serviciu. O valoare ilegala este inlocuita de cea mai apropiata valoare legala.
Daca nu apar erori, functia listen intoarce zero. In caz de eroare este returnata o valoare SOCKET_ERROR si un cod specific de eroare se poate afla apeland functia WSAGetLastError.
![]()
© Cornel Mironel Niculae, 2004-2005
13-Nov-2004