prizele permit comunicarea între două procese diferite pe aceleași mașini sau diferite. Pentru a fi mai precis, este o modalitate de a vorbi cu alte computere folosind descriptori de fișiere Unix standard. În Unix, fiecare acțiune I / O se face prin scrierea sau citirea unui descriptor de fișier. Un descriptor de fișiere este doar un număr întreg asociat cu un fișier deschis și poate fi o conexiune la rețea, un fișier text, un terminal sau altceva.
pentru un programator, o priză arată și se comportă mult ca un descriptor de fișiere de nivel scăzut. Acest lucru se datorează faptului că comenzi precum read() și write() funcționează cu prize în același mod în care fac cu fișierele și conductele.
prizele au fost introduse pentru prima dată în 2,1 BSD și ulterior rafinate în forma lor actuală cu 4,2 BSD. Funcția sockets este acum disponibilă cu cele mai multe versiuni actuale ale sistemului UNIX.
unde se utilizează soclul?
un soclu Unix este utilizat într-un cadru de aplicație client-server. Un server este un proces care îndeplinește anumite funcții la cererea unui client. Majoritatea protocoalelor la nivel de aplicație, cum ar fi FTP, SMTP și POP3, utilizează prize pentru a stabili conexiunea între client și server și apoi pentru schimbul de date.
tipuri de soclu
există patru tipuri de prize disponibile pentru utilizatori. Primele două sunt cele mai frecvent utilizate, iar ultimele două sunt rareori utilizate.
se presupune că procesele comunică numai între prize de același tip, dar nu există nicio restricție care să împiedice comunicarea între prize de diferite tipuri.
-
Stream Sockets-livrarea într-un mediu de rețea este garantată. Dacă trimiteți prin priza de flux trei elemente” A, B, C”, acestea vor ajunge în aceeași ordine − „A, B, C”. Aceste prize utilizează TCP (Transmission Control Protocol) pentru transmiterea datelor. Dacă livrarea este imposibilă, expeditorul primește un indicator de eroare. Înregistrările de date nu au limite.
-
Datagram Sockets-livrarea într-un mediu de rețea nu este garantată. Sunt fără conexiune, deoarece nu trebuie să aveți o conexiune deschisă ca în prizele de flux − construiți un pachet cu informațiile despre destinație și trimiteți-l. Ei folosesc UDP (User Datagram Protocol).
-
Prize Raw-acestea oferă utilizatorilor acces la protocoalele de comunicare subiacente, care acceptă abstracții socket. Aceste prize sunt în mod normal orientate spre datagrame, deși caracteristicile lor exacte depind de interfața furnizată de protocol. Prizele brute nu sunt destinate utilizatorului general; acestea au fost furnizate în principal celor interesați să dezvolte noi protocoale de comunicare sau să obțină acces la unele dintre facilitățile mai criptice ale unui protocol existent.
-
prize de pachete secvențiate-sunt similare cu o priză de flux, cu excepția faptului că limitele de înregistrare sunt păstrate. Această interfață este furnizată numai ca parte a abstractizării soclurilor sistemelor de rețea (NS) și este foarte importantă în cele mai grave aplicații NS. Sequenced-packet sockets permite utilizatorului să manipuleze sequence Packet Protocol (SPP) sau Internet Datagram Protocol (IDP) anteturi pe un pachet sau un grup de pachete, fie prin scrierea unui antet prototip împreună cu orice date urmează să fie trimise, fie prin specificarea unui antet implicit pentru a fi utilizat cu toate datele de ieșire și permite utilizatorului să primească anteturile pe pachetele primite.
ce urmează?
următoarele capitole sunt menite să vă consolideze elementele de bază și să pregătească o fundație înainte de a putea scrie programe Server și Client folosind socket. Dacă doriți direct să săriți pentru a vedea cum să scrieți un program client și server, atunci puteți face acest lucru, dar nu este recomandat. Este recomandat să mergeți pas cu pas și să completați aceste câteva capitole inițiale pentru a vă crea baza înainte de a trece la programare.