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
WWW.UNKNOWNS.RO / Unix / Linux / FreeBSD / Socket Moderat de florineatza, zpetry
Autor
Mesaj Pagini: 1
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
   
Pagini: 1  

Mergi la