acceptFunctia accept accepta o conectare la un socket.
SOCKET accept (
SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen
);
unde:
s -[in] este un descriptor ce identifica socketul care este in
stare de ascultare dupa apelul functiei listen.addr - [out] este un pointer optional catre un buffer care memoreaza
adresa entitatii care se conecteaza, asa cum este ea cunoscuta stratului de
comunicare. Formatul exact al acestui argument este determinat de familia de
adrese stabilita atunci cand socketul a fost creat.addrlen - [out] este un pointer optional catre un intreg ce contine lungimea
adresei addr.Aceasta functie extrage prima conexiune din stiva (coada) de asteptare la
conectarea la socketul s, creeaza un nou socket si intoarce un
descriptor catre noul socket. Socketul nou creat are aproximativ aceleasi
proprietati ca si s. Daca nu exista nici o cerere de conectare in
stiva de asteptare si socketul nu este marcat ca "fara blocare"
(nonblocking), atunci functia accept blocheaza apelantul pana cand
se face o conectare. Daca socketul este marcat ca fiind "fara blocare"
si nu exista nici o cerere in coada de asteptare, accept intoarce o eroare.
Socketul acceptat nu poate fi folosit pentru a accepta noi conexiuni. Socketul
initial ramane deschis.
Argumentul addr este un parametru rezultat care va contine
adresa entitatii care doreste conectarea, asa cum este ea cunoscuta stratului de
comunicare. Formatul exact al acestui argument depinde de familia de adrese
stabilita atunci cand socketul a fost creat.
Si argumentul addrlen contine o valoarea rezultat; el trebuie sa
contine initial spatiul alocat pentru structura addr; la revenire
el va contine lungimea reala (in octeti) a adresei returnate. Acest apel este
folosit cu socketuri orientate pe conexiune precum SOCK_STREAM. Daca
pointerii addr si/sau addrlen sunt egali cu NULL,
Atunci nu s-a returnat nici un fel de informatie despre adresa indepartata a
socketului acceptat.
Daca nu apare nici o eroare, accept intoarce o valoare de tip SOCKET care este un descriptor pentru socketul acceptat. In caz contrar, o este intoarsa o valoare INVALID_SOCKET si (in sitemul Windows, un cod de eroare specific poate fi obtinut apeland WSAGetLastError).
![]()
© Cornel Mironel Niculae, 2004-2005
13-Nov-2004