Sobes.tech
Junior

Ce este un socket?

sobes.tech AI

Răspuns de la AI

Un socket (socket) este o interfață de programare (API) pentru interacțiunea în rețea între procese. Oferă o abstracție pentru lucrul cu protocoale de rețea, precum TCP și UDP, permițând programelor să trimită și să primească date prin rețea.

Reprezintă un punct final pentru schimbul de informații. Cu ajutorul socketurilor, de exemplu, un server web poate accepta cereri de la browsere, iar o aplicație client poate trimite date către server.

Socketurile pot fi de două tipuri principale:

  • Stream (SOCK_STREAM): Utilizează protocolul TCP, asigurând o livrare fiabilă și ordonată a datelor. Sunt potrivite pentru aplicații care necesită garanții de livrare, precum HTTP sau FTP.
  • Datagram (SOCK_DGRAM): Utilizează protocolul UDP, fără a garanta livrarea sau ordinea pachetelor. Sunt folosite acolo unde viteza este importantă, precum în jocurile online sau streamingul video.

Etapele principale pentru lucrul cu socketurile într-o aplicație de rețea (exemplu pentru TCP):

  1. Crearea socketului: Apelarea socket() pentru obținerea unui descriptor de socket.
  2. Bind: Legarea socketului la o adresă IP și un port specific pe mașina locală (pentru socketul server).
  3. Ascultare (Listen): Punerea socketului server în modul de ascultare pentru conexiuni intrante.
  4. Acceptare (Accept): Acceptarea unei conexiuni intrante de la client, creând un nou socket pentru această conexiune.
  5. Stabilirea conexiunii (Connect): Conectarea clientului la server prin IP și port (pentru socketul client).
  6. Trimitere/Primire (Send/Receive): Schimbul de date prin conexiunea stabilită.
  7. Închiderea (Close): Închiderea socketului după terminarea lucrului.

Exemplu de creare a unui socket TCP în Python:

import socket

# Crearea unui socket TCP/IP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Operațiuni suplimentare: bind(), listen(), accept() pentru server
# sau connect() pentru client, send(), recv(), close()