send
Functia send() trimite date printr-un
socket conectat.
int send (
SOCKET s,
const char FAR * buf,
int len,
int flags
);
unde:
s - [in] este un descriptor ce identifica un socket conectat.buf - [in] este (pointer catre) un buffer ce contine datele
ce trebuiesc transmiselen - [in] este lungimea datelor din buf.flags - [in] specifica modul in care apelul este facut.Functia send() se foloseste pentru a scrie date
printr-un socket conectat. Pentru socketuri orientate pe mesaj, trebuiesc loate
precautii pentru a nu se depasii dimensiunea maxima a pachetului , care poate fi
obtinuta citind valoarea optiunii SO_MAX_MSG_SIZE. Daca datele depasesc aceasta
lungime pentru a trece automat prin protocolul de folosit va apare o eroare (WSAEMSGSIZE
) si datele nu sunt transmise.
De retinut ca indeplinirea cu succes a functiei send()
nu indica ca datele au ajuns la destinatie in conditii bune.
Daca nu este disponibil nici un spatiu in sistemul de
transport, send() va bloca aplicatia exceptand situatia cand socketul
a fost trecut in modul de intrare/iesire fara blocare. Pe socketuri orientate pe
streamuri fara blocare, numarul de octeti poate fi intre 1 si lungimea necesara,
depinzand de dimensiunea bufferul disponibil la ambele capete ale conexiunii.
Functia select() (sau functiile WSAAsyncSelect() sau WSAEventSelect())
poate fi utilizata pentru a determina cand este este posibila transmiterea
urmatoarelor date.
Apelarea functiei send() cu o lungime zero va fi
tratata de implementare ca o operatie indeplinita cu succes. In acest caz, send
poate intoarce zero ca o valoare ce specifica indeplinirea cu succes a functiei.
Pentru socketurile orientate pe mesaj, o datagrama de lungime zero este
transmisa.
Parametrul flags poate fi folosit pentru a
influenta comportarea functiei in afara optiunilor specificate de socketul
asociat. Adica, semantica acestei functii este determinata de optiunile pentru
socket si de parametrul flags.
Daca nici o eroare nu apare, functia send() intoarce numarul total
de octeti trimisi. De retinut ca acesta poate fi mai mic decat parametrul
indicat prin len. In caz de eroare, este returnata o valoare SOCKET_ERROR
(codul erorii poate fi obtinut apeland WSAGetLastError).
![]()
© Cornel Mironel Niculae, 2004-2005
13-Nov-2004