I socket

12 maggio 2006

La comunicazione tra due o più computer è certamente una delle caratteristiche più affascinanti e stimolanti dell’informatica che ha sempre rivestito un ruolo di primaria importanza. Java offre una serie di classi semplici e, allo stesso tempo, complete per consentire la scrittura di applicazioni client-server dai più svariati utilizzi, attraverso l’utilizzo dei Socket.

Ma che cos’è un Socket? Con tale termine (che letteralmente vuol dire “presa”), in generale, si definisce una rappresentazione a livello software utilizzata per interfacciare i due terminali (endpoint) in gioco in una connessione tra due computer. In altre parole, potremmo considerare i socket come delle prese (una per ogni macchina) che siano interconnesse tra loro attraverso un ipotetico cavo in cui passi il flusso di dati che i computer si scambiano.

Un esempio che rende bene l’idea è quello di pensare ai socket come alle prese telefoniche presenti ai due capi opposti durante una conversazione al telefono. Le due persone che colloquiano al telefono comunicano attraverso le rispettive prese. La conversazione, in tal caso, non finirà finché non verrà chiusa la cornetta e fino ad allora la linea resterà occupata.

I protocolli coinvolti nell’implementazione dei Socket sono, fondamentalmente, 2:

  • TCP (Transfer Control Protocol)
  • UDP (User Datagram Protocol)

In questo articolo faremo riferimento ai socket di tipo TCP. Per quanto riguarda i socket UDP, è utile sapere che sono implementati in Java attraverso l’uso della classe DatagramSocket.

Per la comunicazione in rete, Java utilizza il modello a stream. Un socket può mantenere due tipi di stream: uno di input ed uno di output. Dal punto di vista software, ciò che avviene è che un processo invia dei dati ad un altro processo attraverso la rete, scrivendo sullo stream di output associato ad un socket. Un altro processo, accede ai dati scritti in precedenza leggendo dallo stream di input del socket stesso.

Per far sì che una tale comunicazione possa avvenire con successo, è necessario che uno dei due computer (il server) si metta in attesa di una chiamata mentre l’altro (il client) tenti di comunicare con il primo. Nella realtà, un server che sia in grado di comunicare con un solo client per volta potrebbe essere poco utile. Pertanto, utilizzando i vantaggi offerti dai thread (vedremo come) sarà possibile estendere tale scenario ed ottenere un server in grado di interagire contemporaneamente con più client.

Se vuoi aggiornamenti su I socket inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su I socket

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing