Sobes.tech
Junior

Cos'è un socket?

sobes.tech AI

Risposta dell'AI

Un socket (socket) è un'interfaccia di programmazione (API) per l'interazione di rete tra processi. Fornisce un'astrazione per lavorare con protocolli di rete come TCP e UDP, consentendo ai programmi di inviare e ricevere dati attraverso la rete.

Rappresenta un punto finale per lo scambio di informazioni. Con i socket, ad esempio, un server web può accettare richieste dai browser, e un'applicazione client può inviare dati al server.

I socket possono essere di due tipi principali:

  • Stream (SOCK_STREAM): Utilizzano il protocollo TCP, garantendo una consegna affidabile e ordinata dei dati. Sono adatti per applicazioni che richiedono garanzie di consegna, come HTTP o FTP.
  • Datagram (SOCK_DGRAM): Utilizzano il protocollo UDP, senza garantire la consegna o l'ordine dei pacchetti. Sono usati dove la velocità è importante, come nei giochi online o nello streaming video.

Le fasi principali per lavorare con i socket in un'applicazione di rete (esempio per TCP):

  1. Creazione del socket: Chiamata a socket() per ottenere un descrittore di socket.
  2. Bind: Associare il socket a un indirizzo IP e a una porta specifici sulla macchina locale (per il socket del server).
  3. Ascolto (Listen): Mettere il socket del server in modalità di ascolto delle connessioni in arrivo.
  4. Accettare (Accept): Accettare una connessione in arrivo dal client, creando un nuovo socket per questa connessione.
  5. Stabilire la connessione (Connect): Connettere il client al server tramite IP e porta (per il socket del client).
  6. Invio/Ricezione (Send/Receive): Scambiare dati attraverso la connessione stabilita.
  7. Chiusura (Close): Chiudere il socket dopo aver terminato.

Esempio di creazione di un socket TCP in Python:

import socket

# Creazione di un socket TCP/IP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Operazioni aggiuntive: bind(), listen(), accept() per il server
# o connect() per il client, send(), recv(), close()