Sunteți pe pagina 1din 5

UNIVERSITATEA ROMNO AMERICAN MASTERAT INFORMATICA ECONOMICA

SOCKET-URI

Profesor coordonator: prof. univ. dr. Cornelia Paulina Botezatu Masterand: tefan-Ioan Creu Gr upa 2 iem BUCURETI - 2013 -

Introducere
Un socket este un punct final al unei comunicaii, un obiect al unei aplicaii prin care aceasta trimite i recepioneaz date. Prin intermediul lui se realizeaz un schimb de date n regim full- duplex. Un socket are un tip, este asociat unui proces i trebuie s aib un nume. n mod curent socket- ul schimb date doar cu un alt socket aflat n acelai domeniu de comunicaie i care utilizeaz acelai protocol. Exist dou tipuri de socket: stream; datagram. Socket-ul de tip stream suport un flux de date fr limite sub forma unui ir de octei. Se garanteaz transmiterea i recepionarea corect. Acest tip de socket se mai numete connexion oriented. El utilizeaz protocolul TCP/IP. Socket-ul de tip datagram suport un flux de date orientat spre fiiere. El nu garanteaz livrarea fiierelor. Acest tip de socket se mai numete message oriented. El utilizeaz protocolul UDP. Arhitectura client-server este comunicaiilor bazate pe socket. cea mai potrivit pentru realizarea

Utilizarea firelor pentru evitarea blocrii conexiunii


Dac aplicaia client nu are altceva de fcut dect s atepte date atunci nu este necesar s se creeze fire. Dac aplicaia trebuie s rspund i altor evenimente generate de interfaa utilizator, ceea ce este cel mai probabil este necesar s se creeze fire separate pentru citire i scriere.

Despre endianism i transferul datelor


Atunci cnd se creeaz o aplicaie pe o anumit platform un programator nu acord mare atenie reprezentrii datelor. Atunci cnd se creeaz o aplicaie pentru reea problema reprezentrii datelor este foarte important. Internetul, n special, a impus o secven standard pentru stocarea datelor numerice referit prin sintagma network byte-order. Spre deosebire, secvena pentru reprezentarea datelor pe calculatorul gazd se numete host byte-order . Aa cum se cunoate, pentru a transmite date de la un sistem la altul, stratul fizic al reelei va transmite un ir de octei prin intermediul firelor de conexiune. Stratul fizic nu modifica secvena de bii pe care o transmite. Dac se transmite numrul 0x1ADE de pe un calculator PC pe un calculator McIntosh, PC-ul, utiliznd little-endian byte-order, va transmite mai nti octetul cel mai puin semnificativ i apoi octetul cel mai semnificativ. La recepie se utilizeaz big-endian byte-order i primul octet va fi interpretat ca octetul cel mai semnificativ. Deci pe Mcintosh numrul trimis de PC va fi interpretat ca 0xDE1A. Pentru a evita asfel de erori Internet-ul definete ca standard de reea bigendian byte-order. Cu alte cuvinte este impus stocarea datelor cu octetul cel mai semnificativ naintea octetului mai puin semnificativ. nainte de a transmite date pe reea este necesar s se fac o transformare a acestora n ordinea big-endian. La recepia datelor de pe reea trebuie s se fac transformarea n ordinea impus de platforma pe care se lucreaz. Winsock API ofer o serie de funcii care realizeaz operaiile de transformare a ordinii octeilor. Aceste funcii sunt prezentate n tab. 1. Tabelul 1. Funcii de conversie Winsock Funcia Winsock Explicaii htonl Convertete un intreg pe 32 de bii din host- byte order n networkbyte oreder

htons Convertete un intreg pe 16 de bii din host- byte order n networkbyte oreder ntohl Convertete un intreg pe 32 de bii network- byte oreder din n hostbyte order ntohs Convertete un intreg pe 16 de bii network- byte oreder din n hostbyte order

Gsirea adresei IP a unui calculator


Programele de comunicaie pentru reea trebuie s cunoasc portul pe care aplicaia client poate comunica cu aplicaia server i adresa IP a calculatorului cu care se dorete comunicarea. Pentru gsirea adresei IP este necesar s se utilizeze funcii asincrone pe care Socket API le are sau s se completeze o structur de date specific cu datele de identificare a adresei IP a serverului.

Despre Winsock API


Winsock API este o bibliotec de funcii care implementeaz interfaa de tip socket care este cunoscut sub numele de BSD (Berkeley Software Distribution). Programatorii de aplicaii de acest tip sub sistemul Windows trebuie s lege aplicaia de biblioteca WSOCK32.LIB. n cadrul programelor scrise n LabWindows/CVI aceast bibliotec trebuie adugat utiliznd EditAdd Files to Project .. Library (*.lib). Ea se gsete n directorul Program Files\National Instruments\CVI7x\sdk\lib Socket bazat pe TCP legtur sigur realizat prin intermediul unui socket este bazat pe TCP. O astfel se legtur trebuie s realizeze conexiune ntre dou procese nainte ca acestea s poat trimite i recepiona date unul de la altul. Datele trimise ntre procese sunt simple fluxuri de octei.. ntr-o interaciune tipic client-server, serverul creeaz un socket, care are un nume i ateapt ca clienii s se conecteze la server. Clientul creeaz i

el un socket i se conecteaz la server. Atunci cnd serverul detecteaz conectarea la socket-ul su, acesta creeaz un nou socket i l utilizeaz pentru comunicaia cu clientul. Socket-ul de la server continu s atepte conexiuni de la ali clieni.

Socket bazat pe TCP


O legtur sigur realizat prin intermediul unui socket este bazat pe TCP. O astfel se legtur trebuie s realizeze conexiune ntre dou procese nainte ca acestea s poat trimite i recepiona date unul de la altul. Datele trimise ntre procese sunt simple fluxuri de octei.. ntr-o interaciune tipic client-server, serverul creeaz un socket, care are un nume i ateapt ca clienii s se conecteze la server. Clientul creeaz i el un socket i se conecteaz la server. Atunci cnd serverul detecteaz conectarea la socket-ul su, acesta creeaz un nou socket i l utilizeaz pentru comunicaia cu clientul. Socket-ul de la server continu s atepte conexiuni de la ali clieni.

S-ar putea să vă placă și