La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione.

Presentazioni simili


Presentazione sul tema: "Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione."— Transcript della presentazione:

1 Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione 7 – Socket Java

2 Altre funzioni utili bzero(char* c, int n) Numero di byte nulli che iniziano in c. gethostname(char *name, int len) Trova il nome dell’host corrente. gethostbyaddr(char *addr, int len, int type) Converte il nome di host IP in struttura contenente un numero intero lungo. inet_addr(const char *cp) Converte stringhe di caratteri decimali puntati in interi lunghi. inet_ntoa(const struct in_addr in) Converte long in notazione decimale puntata.

3 Porte libere Talvolta se accade un’uscita “rude” da un programma (Ctrl-c), il sistema operativo non libera immediatamente la porta. Alla fine, dopo alcuni minuti, la porta verrà liberata. Per ridurre le probabilità che si verifichi questo problema, bisogna inserire il seguente codice: –#include –void cleanExit(){exit(0);} –nel codice che usa il socket:  signal(SIGTERM, cleanExit);  signal(SIGINT, cleanExit);

4 Socket Java Il pacchetto.net di Java fornisce due classi: Socket: per implementare un client; ServerSocket: per implementare un server.

5 Implementazione di un server (1) 1.Aprire il socket server : –ServerSocket server; –DataOutputStream os; –DataInputStream is; –Server = new ServerSocket( PORT ); 2.Aspettare la richiesta del client (Client Request): –Socket client = server.accept(); 3.Creare flussi I/O per comunicare con il client: is = new DataInputStream( client.getInputStream() ); os = new DataOutputStream( client.getOutputStream() );

6 Implementazione di un server (2) 4.Eseguire la comunicazione con il client: –ricevere i dati dal client: String line = is.readLine(); –inviare i dati al client: os.writeBytes(“Hello\n”); 5.Alla fine chiudere il socket: – client.close(); Per server multithread: while (true) –aspettare le richieste del client (v. fase 2); –creare un thread con socket “client” come parametro. Il thread crea flussi (v. fase 3) ed esegue la comunicazione (v. fase 4); –fornito il servizio eliminare il thread.

7 Implementazione di un client FINE 1.Creare un oggetto socket: –client = new Socket ( server, port_id ); 2.Creare flussi I/O per comunicare con il server: –is = new DataInputStream( client.getInputStream() ); –os = new DataOutputStream( client.getOutputStream() ); 3.Eseguire I/O o la comunicazione con il server: –ricevere dati dal server: String line = is.readLine(); –inviare i dati al server: os.writeBytes(“Hello\n”); 4.Alla fine chiudere il socket: –client.close();


Scaricare ppt "Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione."

Presentazioni simili


Annunci Google