WWW.UNKNOWNS.RO
WWW.UNKNOWNS.RO
|
Lista Forumurilor Pe Tematici
|
WWW.UNKNOWNS.RO | Reguli | Inregistrare | Login
POZE WWW.UNKNOWNS.RO
Nu sunteti logat.
|
Nou pe simpatie: Ioana24 25 ani
 | Femeie 25 ani Bucuresti cauta Barbat 27 - 43 ani |
|
VIRUS
WWW.UNKNOWNS.RO
 Din: WWW.UNKNOWNS.RO
Inregistrat: acum 18 ani
Postari: 3176
|
|
1. Ce este un socket ? Este un canal de comunicatie! Exista mai multe tipuri de socketuri : 1. SOCK_STREAM : bidirectional , sigur 2. SOCK_DGRAM : bidirectional , nesigur (pachetele sar putea sa nu se mai intoarca 3. SOCK_RAW : folosit pentru "dedesupturi" 4. SOCK_PCK : cred ca este cel mai vechi (recomandabil a nu se folosi) Exista mai multe tipuri de domeni (ce fac domenile astea ? impun niste reguli de comunicatie socketurilor !): 1. AF_UNIX - domeniu de tip UNIX 2. AF_INET - domeniu de tip Internet; 3. AF_RAW - domeniu de tip RAW
2. Cum creeam un socket ? connect = socket(domeniu,tip,protocol); Ex. Vrem sa cream un socket prin care sa ne putem lega la un port ! connect = socket(AF_INET,SOCK_STREAM,0), Apropo connect este un integer care semnifica descriptorul (exact ca la fisiere)
3. Cum asociem un nume socketului ? Pentru identificare socketului de catre procese acesta are nevoie de un nume. Cand folosim domeniul internet (AF_INET) acest nume este compus din adresa masini server cat si cea a masini client cat si a porturilor lor . Ex. bind(connect,nume,lungime nume)
4. Cum ne conectam ? Depinde ce vrem sa facem . Daca vrem client vom folosi functia connect : connect(descriptor, nume_socket, lungime_nume_socket); unde descripor este descriptorul socket-ului , nume_socket este socketul si lungime nume socket este sizeof(lungime_socket); Daca vrem server folosim listen(decriptor,numar_conexiuni) unde descripor este descriptorul socket-ului iar numar connexiuni este numarul de conexiuni admise de server Ex. listen(connect,5); Dupa care folosim functia accept ca sa "acceptam" cererile catre server Ex. accept(connect,nume_socket, lungime_nume_socket)
5. Cum transmitem si receptionam date ? Sub unix (mai precis sub linux) avem fucntile read si write ! sunt exact aceleasi functii pe care le folosim si la citirea si scrierea in fisiere! Sub windoze lucrurile se complica cam un pic dar nu mult ! Adica se folosesc alte 2 functii : send(connect,buffer,sizeof(buffer),flaguri); recv(connect,buffer,sizeof(buffer),flaguri); unde flaguri reprezinta : MSG_PEEK - la un nou apel al functiei read() sau recv(), va fi citit din nou acelasi mesaj; MSG_OOB - este folosit pentru transmisia mesajelor cu prioritate maximă; MSG_DONTROUTE - trimite datele fără pachetele de rutare.
6. Cum inchidem un socket ? O data cu close(connect); (exact ca la fisiere) sau cu shutdown(connect,tip de inchidere); unde tip de inchidere poate fi 0: nu se main pot citi date prin socket 1: nu se mai pot trimite date 2: nu se mai pot receptiona date.
_______________________________________
|
|
| pus acum 18 ani |
|