[:it]
Realizzare un’applicazione client/server utile ai client per sincronizzare la data e l’ora con quella di un server. Il programma client si collega al server per ottenere le informazioni sulla data e sull’ora correnti. Il server, ogni volta che riceve una richiesta di connessione, invia al programma client l’informazione richiesta.
Programma Server (ServerClock.java)
Programma client
Per eseguire la precedente applicazione si devono usare due finestre del Prompt dei comandi in Windows, oppure due finestre Terminale in Linux. Nella prima finestra si esegue il programma server. Il server si ferma in attesa di ricevere le connessioni. A questo punto, nella seconda finestra, si esegue il programma client. Il risultato è che il client si collega al server sulla porta 3333. Il server crea una nuova connessione e invia al client l’informazione sulla data corrente. Successivamente interrompe la connessione e si mette in attesa di una nuova richiesta. Il client legge i dati che sono stati inviati dal server, li mostra a video e poi termina la connessione. Per interrompere l’esecuzione del programma server si deve digitare la combinazione di tasti Ctrl + C.
Oppure usando eclipse si riesce a riesce a simulare il comportamento.
Se si dispone di una rete con almeno due computer collegati, si può eseguire l’applicazione C/S in modo distribuito. Il programma server può essere eseguito su un computer di cui si conosce l’indirizzo IP oppure il nome.
Prima di eseguire il programma client si deve impostare nel codice il corretto parametro di connessione per l’indirizzo del server.
Per esempio:
String server = “192.168.1.2”;
Il programma client ricompilato può essere eseguito su un computer diverso da quello del server.
Ricapitolando, le fasi che portano alla creazione di una connessione possono essere schematizzate con la seguente sequenza di operazioni.
• Lato server: il programma server resta in attesa di una connessione su una determinata porta, mediante il comando accept della ServerSocket.
• Lato client: il programma client avvia un tentativo di connessione.
• Lato server: il programma server accetta la connessione e crea un oggetto Socket per comunicare con il client.
• Lato client: quando la connessione viene accettata, il programma client crea un oggetto Socket per comunicare con il server
Dopo aver stabilito la connessione, il programma client e server possono comunicare scrivendo e leggendo dagli stream associati alle rispettive socket.
Al termine della comunicazione, entrambi chiudono il canale di connessione.
[:]