-
Home
- Programmazione di artefatti
- Programmazione di artefatti
- Comunicazione tra applicazioni
Il modello client-server e i socket
Un processo
server attende le eventuali connessioni di processiclient. Quando la connessione viene stabilita, il server
esegue dei compiti in base a quanto ricevuto dal client e poi,di solito, la connessione viene interrotta. La comunicazione
tra client e server deve essere affidabile.La programmazione della comunicazione mediante TCP/IP viene di
solito effettuata mediante l'interfaccia socket BSD,introdotta da UNIX 4.2BSD. E', di fatto, una forma di
Inter-Process Communication che si aggiunge alle altre formedi comunicazione tra processi di UNIX (pipe, shared memory,
signals, message queues, semaphores) con la peculiarità diconsentire la comunicazione tra macchine diverse fornite di
indirizzo IP.
Socket
- è uno dei due terminali di una
connessione bidirezionale tra due processi in esecuzione sumacchine collegate ad una rete.
Java fornisce una suite di classi che consentono di stabilire
delle connessioni mediante socket in modo indipendente dallaparticolare realizzazione dei socket da parte del sistema
operativo sottostante. In Java, le classi Socket eServerSocket vengono usate per stabilire la connessione
rispettivamente dal lato client e dal lato server.La comunicazione client-server mediante socket avviene come segue:
CLIENT |
- |
SERVER |
conosce hostname e port number del server |
- |
ascolta il socket |
richiede la connessione al server |
→ |
accetta la connessione |
crea un socket e lo usa per comunicare con il server |
← |
ottiene un nuovo socket su un port differente |
|
- |
continua ad ascoltare il socket originario |
Il modello message passing
Il protocollo di trasmissione UDP realizza di fatto un modellodi comunicazione di tipo message passing con ricezione
bloccante e invio non bloccante. Quindi i due partnercomunicano con una forma di rendez vous "lasco". E' demandato
al programmatore il compito di assicurare la correttaricezione dei messaggi (
datagram ) se essa
è importante per l'applicazione.
Datagram
- è un messaggio la cui
trasmissione in rete non assicura l'effettiva ricezione, iltempo di arrivo, e l'integrita' del contenuto.
La comunicazione in UDP avviene mediante indirizzamento
indiretto di tipo molti a uno: la primitiva send indirizza ilproprio messaggio ad uno specifico identificatore del port
(che gioca il ruolo di una mailbox) di accesso al processodestinazione (hostname e port). Il processo destinazione
conosce l'identità del processo sorgente mediante hostname eport specificati in testa al messaggio.
Mediante UDP, è anche possibile che molti client si mettano inascolto di messaggi inviati (broadcast) da un processo
server. Questa è una comunicazione di tipo message passing unoa molti.
In Java, le classi DatagramSocket e DatagramPacket consentonodi confezionare dei messaggi e di spedirli e riceverli
attraverso socket di tipo UDP. La classe MulticastSocketconsente ad un client di associarsi al gruppo di client che
possono ricevere il broadcast e di ricevere in modo passivo imessaggi inviati dal server.
Comunicazione client-server in processing
Tra le
core libraries di Processing, la
Network consente di creare client e server.
Source:
OpenStax, Programmazione di artefatti interattivi. OpenStax CNX. Dec 09, 2010 Download for free at http://cnx.org/content/col10417/1.9
Google Play and the Google Play logo are trademarks of Google Inc.