La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Cosa è una applicazione distribuita? Più programmi in esecuzione su computer diversi che collaborano scambiandosi dati o anche codice Esempi: World Wide.

Presentazioni simili


Presentazione sul tema: "Cosa è una applicazione distribuita? Più programmi in esecuzione su computer diversi che collaborano scambiandosi dati o anche codice Esempi: World Wide."— Transcript della presentazione:

1 Cosa è una applicazione distribuita? Più programmi in esecuzione su computer diversi che collaborano scambiandosi dati o anche codice Esempi: World Wide Web, Ftp, Telnet Prestazioni dipendenti da banda e latenza, piuttosto che da potenza (memoria, velocità processore) del singolo computer

2 Paradigmi di programmazione Interazione tra i vari componenti indipendente dalla locazione fisica e trasparente per lutente. Approcci: CLIENT/SERVER REMOTE EVALUATION CODE ON DEMAND AGENTI MOBILI

3 Client-Server Un Programma Client richiede servizi messi a disposizione da un programma Server (anche sulla stessa macchina) Esempi Telnet: Permette di operare su un computer remoto come se fosse locale X-Window: ogni applicazione per accedere al display chiede servizi al server X-window Vengono scambiati solo dati Server Richieste Risposte

4 Remote Evaluation Un programma X usa le risorse sulla macchina in cui risiede un programma Y, fornendo ad Y il codice per usarle. Architettura Client/Server Programmabile. Esempio: Uso di una periferica Word usa le risorse della periferica inviando i comandi necessari per produrre loutput desiderato Word Comandi Output Desiderato

5 Code On Demand Un programma X ha le risorse da utilizzare e chiede ad un programma Y le istruzioni da eseguire Esempio: 1)Il browser ha le risorse (monitor, primitive grafiche) 2)Il server cerca il documento richiesto e lo invia al browser 3)Il browser interpreta il documento e lo presenta allutente Web Server Browser Richieste Risposte con codice

6 Agenti Mobili Un programma X si trasferisce su un altro computer con i suoi dati e continua la sua esecuzioni lì. Es. La macchina su cui risede X non ha la potenza di calcolo necessaria. X si trasferisce su un computer potente, effettua le operazioni e infine ritorna sul computer da cui era partito Conseguenze: Riduzione utilizzo della rete (solo 2 comunicazioni) rispetto alla chiamata di diversi servizi su server

7 Cosa offre JAVA -Socket Classi utilizzabili dallutente per scrivere facilmente applicazione Client/Server -Remote Method Invocator RMI Permette ad oggetti su computer diversi di comunicare tra loro -Downloading dinamico della classi Gli Applet sono un esempio di code-on-demand -Serializzazione degli oggetti Anche i threads sono oggetti che possono essere spediti: remote-evaluation (N.B. Lo stato di esecuzione del thread non può essere serializzato; artifici per gli agenti mobili) Punto di forza: Indipendenza dalla piattaforma! Anche il codice può essere scambiato.

8 Esercitazione JAVA: Socket (25/01)

9 Sommario: java.net La classe InetAddress: rappresentazione degli indirizzi IP Un programma che parla con un altro: approccio Client/Server Le Classi Socket e ServerSocket Esempi: EchoClient, HTTP Client

10 Cosa è un Socket? Il Socket il punto di ingresso/uscita di un programma verso un altro programma. Come si indirizza un programma? Macchina su cui corre (host name o IP) + identificativo del programma (numero di porta) Da un punto di vista astratto.. ServerClient Richiesta connessione: Host name + port number Accept

11 Cosa è un Socket? Supponiamo arrivi un altro client.. Il server ha adesso 2 Socket attivi (due collegamenti con applicativi esterni..). Ogni Socket e individuato da 4 parametri: IP + porta locale IP + porta remota Richiesta connessione: Host name + port number Accept ServerClient 2 Socket diversi con la stessa porta locale!

12 Implementazione di Socket Aggiungere un oggetto Socket ad un applicativo consente la comunicazione con altri applicativi! Nel package java.net esistono due diverse classi che implementano il concetto di Socket: una per il socket nel programma Server e laltra per il socket nel programma Client. ServerSocket(int port) ServerSocket(int port, int count) Socket(String host, int port) Socket(InetAddress adr, int port) ServerSocket: occorre specificare porta di ascolto e/o numero max di client; Server (Client): occorre specificare host di destinazione (nome host o IP) e numero di porta del server.

13 Rappresentazione di un Host 2 Modi possibili: Concetto: Nome host -> Implementazione: String Concetto: Indirizzo IP -> Implementazione: Classe InetAddress Si puo passare dalluna allaltra rappresentazione molto semplicemente; lutente non deve occuparsi di nulla (es. Interrogazione DNS) InetAddress

14 Esempio: uso di InetAddress class IPDemo{ public static void main(String[] args) throws Exception { InetAddress a, my; //Metodi statici: non si riferiscono ad un //oggetto in particolare a = InetAddress.getByName("www.tti.unipa.it"); my = InetAddress.getLocalHost(); //Metodi propri: si applicano ad un oggetto di //tipo InetAddress String hostIP = a.getHostAddress(); String host= a.getHostName(); String myhost = my.getHostName(); String myIP= my.getHostAddress(); } Consente di ottenere la risoluzione dei nomi e degli indirizzi

15 Esempio: LEcho Server 3 Passi fondamentali: a) Mettere un Socket in Ascolto specificando un numero di porta ServerSocket listen = new ServerSocket(port); b) Aspettare larrivo del cliente (istruzione bloccante) Socket client = listen.accept(); c) Collegare opportunamete gli stream di ingresso e di uscita per eseguire il servizio (tutto quello che arriva da in deve andare su out): InputStream i = client.getInputStream(); OutputStream o = client.getOutputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(i)); PrintWriter output = new PrintWriter(o); o i output (InputStreamReader) in Server

16 Cosa succede quando si accetta un Client? Server Client Lutente non deve preoccuparsi di nulla. Astraendo completamente da tutto quello che succede sotto, tra server e client puo semplicemente considerare instaurato un condotto di bit in entrambe le direzioni.

17 Esempio: LEcho Client 3 Operazioni fondamentali: a) Fare una richiesta di connessione ad un server Socket server = new Socket(localhost, port); b) Verificare che la richiesta sia accolta (non si generano eccezioni: es. Host sconosciuto, connessione rifiutata, etc. ) try… catch(Exception e) c) Collegare opportunamete gli stream di ingresso e di uscita per attivare la fruizione del servizio (stream verso i socket e verso la tastiera): InputStream i = client.getInputStream(); OutputStream o = client.getOutputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(i)); BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in)); PrintWriter output = new PrintWriter(o);

18 Esercizi Scrivere un programma che legga da tastiera il nome di un host e restituisca lindirizzo IP dellhost. Dopo aver visto in funzione Echo Client ed Echo Server, provare ad implementare un server che restituisca lecho invertito (usare la classe StringBuffer e il metodo reverse). Scrivere un programma server che letto da client il nome di un file testo del suo archivio, provvede ad inviarlo al cliente.


Scaricare ppt "Cosa è una applicazione distribuita? Più programmi in esecuzione su computer diversi che collaborano scambiandosi dati o anche codice Esempi: World Wide."

Presentazioni simili


Annunci Google