Ce este Socket C?

„Socket C” este un termen care uneori este folosit pentru a se referi la procesul de scriere a codului socket în limbajul de programare C și uneori este folosit pentru a se referi la fișierul de bibliotecă real care deține implementarea unor funcții socket. Fișierul actual de bibliotecă socket C conține implementări pentru diferite funcții și macrocomenzi care oferă funcționalitatea de bază socket furnizată de bibliotecile de limbă, deși fișierul socket C este dependent de sistemul de operare și este posibil să nu fie implementat pe unele sisteme. Scrierea codului socket C implică crearea unei interfețe cu un protocol standard de intrare și ieșire, cunoscut sub numele de socket, și utilizarea acesteia pentru a trimite sau a primi informații, de obicei printr-o rețea sau printr-o bucată de hardware. Limbajul de programare C este destinat să fie portabil, dar programarea socket-urilor se bazează pe unele funcții specifice sistemului de nivel scăzut, așa că uneori poate fi dificil să scrieți programe în C care folosesc socket-uri, dar care mențin și portabilitatea între sisteme.

Există trei tipuri de bază de prize pe care le acceptă socket-ul C. Primul este cunoscut ca datagramă, al doilea este un flux, iar al treilea este accesul brut. O datagrama este un tip de soclu care trimite informații în pachete mici cunoscute sub numele de pachete. Fiecare pachet este trimis dintr-o sursă cu informații despre soclul de destinație pe care îl caută în rețea. În timp ce o datagramă poate fi o metodă eficientă de comunicare prin socketuri și este adesea folosită pentru a trimite e-mailuri, este, de asemenea, cu pierderi, deoarece niciun pachet care este trimis nu este garantat să ajungă la socket-ul de destinație.

Un soclu de flux realizează o conexiune la un alt soclu și informațiile sunt transmise direct între socluri. Când este utilizat în programarea socket-ului C, acest tip de socket asigură că toate datele care sunt trimise sunt primite pe cealaltă parte. O complicație, totuși, este că socket-ul poate folosi uneori blocarea, ceea ce înseamnă că socketul va opri execuția unui proces până când informațiile sunt primite sau până când socket-ul este închis, deși utilizarea thread-urilor sau a proceselor bifurcate poate rezolva această problemă în majoritatea cazurilor. Accesul brut la soclu este oferit ca mijloc de interfață efectivă la nivel aproape hardware cu orice dispozitiv găzduiește soclul.

Prizele sunt utilizate în mod obișnuit în diferite forme pentru comunicațiile prin Internet. Hardware-ul și driverele care permit crearea rețelei variază foarte mult în funcție de sistemul de operare, așa că poate fi dificil să găsiți un fișier de bibliotecă socket C care acceptă toate combinațiile posibile. Din acest motiv, fișierul socket C în sine, precum și fișierul antet socket, conține adesea o listă lungă de directive de compilare condiționată, astfel încât se va compila diferit pe diferite sisteme.