Socket & RMI Ingegneria del Software - San Pietro



Похожие документы
Programmazione distribuita

Programmazione di rete in Java

RMI Remote Method Invocation

RMI. Java RMI RMI. G. Prencipe

Java Remote Method Invocation

Programmazione di sistemi distribuiti

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

Applicazioni distribuite

Introduzione alle applicazioni di rete

Reti di Telecomunicazione Lezione 6

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Architettura Client-Server

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_ Stefano Millozzi

Reti di Telecomunicazione Lezione 7

Esercitazione di Sistemi Distribuiti: Java RMI

Altri tipi di connessione

RMI: metodi equals e hashcode

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Parte II: Reti di calcolatori Lezione 10

Programmazione dei socket con TCP #2

Corso di Reti di Calcolatori L-A

Controllo Winsock di Visual Basic

Sistemi Operativi (modulo di Informatica II)

Sockets in Java. Lorenzo Gallucci

I Socket. Laboratorio Software M. Grotto R. Farina

Cenni di programmazione distribuita in C++ Mauro Piccolo

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Dal protocollo IP ai livelli superiori

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

RMI. Prova pratica di Sistemi Distribuiti:

appunti delle lezioni Architetture client/server: applicazioni server

Transmission Control Protocol

Firewall e Abilitazioni porte (Port Forwarding)

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Remote Method Invocation (RMI)

Inizializzazione degli Host. BOOTP e DHCP

Introduzione a Java Remote Method Invocation (RMI)

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sockets e DatagramSocket

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Reti di Telecomunicazione Lezione 8

Esercitazione [6] Client/Server con Socket

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

appunti delle lezioni Architetture client/server: applicazioni client

HTTP adaptation layer per generico protocollo di scambio dati

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Standard di comunicazione

Ingegneria del Software. Presentazione del pattern Proxy

CONFIGURARE IL DISPOSITIVO DI TELEASSISTENZA

Agent, porte, connettività e reti L agent di Kaseya utilizza la porta 5721 per comunicare con il server, ma che tipo di porta è?...

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

12.5 UDP (User Datagram Protocol)

Architettura MVC-2: i JavaBeans

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

Telematica II 12. Esercitazione/Laboratorio 4

Software di gestione della stampante

Approccio stratificato

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Configurazione WAN (accesso internet)

2 Configurazione lato Router

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

GERARCHIE RICORSIVE - SQL SERVER 2008

Networking. Mauro Migliardi Ph. D.

FTP. Appunti a cura del prof. ing. Mario Catalano

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Do-Dots Protocollo di comunicazione

Lezione n.10 LPR- Informatica Applicata RMI CallBacks

Corso di Reti di Calcolatori

Oggetti Lezione 3. aspetti generali e definizione di classi I

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L

Applicazioni web. Parte 5 Socket

1) GESTIONE DELLE POSTAZIONI REMOTE

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Studi di Settore. Nota Operativa 22/4/2013

Standard Nazionale di Comunicazione Mercato Gas

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Lo scenario: la definizione di Internet

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Standard Nazionale di Comunicazione Mercato Gas

Транскрипт:

Socket & RMI Ingegneria del Software - San Pietro

Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la connessione stabilita.

Socket Il socket è identificato dalle coppie di IP e porta. Vi sono 2 protocolli di comunicazione: TCP - Transmission Control Protocol UDP - User Datagram Protocol

Socket TCP Socket ServerSocket Client Server Socket

Socket UDP Socket Socket Client Server

Caratteristiche Il protocollo TCP è: Orientato alla connessione Controlla eventuali errori, congestione e flusso di comunicazione Normalmente userete sempre TCP A meno che non abbiate problemi di latenza (es. streaming audio/video)

Lato client Basta creare un oggetto Socket passando l hostname e la porta Si utilizza il socket come un normale I/O I metodi getinputstream e getoutputstream ritornano gli stream di ingresso/uscita associati al socket Alla fine si chiude il socket col metodo close 1 import java.net.socket; 2 3 //... 4 Socket socket; 5 socket = new Socket(host, port); 6 OutputStream os = socket.getoutputstream(); 7 InputStream reader = socket.getinputstream(); 8 //... 9 socket.close();

Esercizio Si implementi un client HTTP

Lato server Si crea un oggetto ServerSocket passando la porta Il metodo accept ritorna l oggetto Socket relativo al client che si connette Alla fine si chiude il socket col metodo close 1 import java.net.serversocket; 2 import java.net.socket; 3 4 //... 5 ServerSocket serversocket = new ServerSocket(port); 6 Socket connection = serversocket.accept(); 7 //... 8 connection.close(); 9 serversocket.close();

Chiusura socket Il metodo close chiuderà un socket aperto Eventuali operazioni in corso verranno interrotte con una IOException ServerSocket e Socket hanno un metodo isclosed che restituisce true se il socket è stato chiuso

Remarks I metodi visti finora sono bloccanti! Garantiscono la riuscita/fallimento dell operazione richiesta quanto ritornano Possono però introdurre ritardi

Esercizio Si implementi un server daytime

RMI middleware per applicare la programmazione orientata agli oggetti nel contesto distribuito Concetto di oggetto remoto: oggetto il cui riferimento è disponibile su una JVM diversa da quella in cui risiede l oggetto. Possono essere invocati metodi su oggetti remoti, per i quali si ottiene un riferimento remoto passaggio dei parametri per valore per oggetti non remoti passaggio dei parametri per indirizzo per oggetti remoti possibilità di scaricare (download) automaticamente le classi necessarie per la valutazione remota

Uso tipico Server crea oggetti remoti, li rende visibili e attende che i client invochino metodi su di essi Client ottiene riferimenti a oggetti remoti e invoca metodi su di essi

Funzionalità Localizzazione di oggetti remoti Gli oggetti remoti sono registrati presso un registro di nomi (rmiregistry) Le operazioni passano come parametri e/o restituiscono riferimenti a oggetti remoti Comunicazione con oggetti remoti gestita da RMI, per i programmi accedere a oggetti remoti non fa differenza rispetto agli oggetti "normali" Dynamic class loading essendo possibile passare oggetti ai metodi di oggetti remoti, oltre a trasmettere i valori dei parametri, RMI consente di trasferire il codice degli oggetti a run time (potrebbe trattarsi di un nuovo sottotipo)

Definizioni Oggetto remoto: oggetto i cui metodi possono essere invocati da una Java Virtual Machine diversa da quella in cui l oggetto risiede Interfaccia remota: interfaccia che dichiara quali sono i metodi che possono essere invocati da una diversa Java Virtual Machine Server: insieme di uno o più oggetti remoti che, implementando una o più interfacce remote, offrono delle risorse (dati e/o procedure) a macchine esterne distribuite sulla rete Remote Method Invocation: invocazione di un metodo presente in una interfaccia remota implementata da un oggetto remoto. La sintassi di una invocazione remota è identica a quella locale

Registry È un programma di rete che ascolta su una porta, di default la 1099. Può essere creato tramite il metodo LocateRegistry.createRegistry Alternativamente si può eseguire del terminale (rmiregistry -J-Djava.rmi.server.hostname=0.0.0.0)

Architettura Il client colloquia con un proxy locale del server, detto stub rappresenta il server sul lato client implementa l interfaccia del server è capace di inoltrare le chiamate di metodi il client ha un riferimento locale all oggetto stub Esiste anche un proxy del client sul lato server, detto skeleton è una rappresentazione del client chiama i servizi del server sa come fare forward dei risultati lo skeleton ha un riferimento all oggetto

Architettura

Creazione Definire una interfaccia remota per la comunicazione tra client e server Definire un oggetto remoto che implementa l interfaccia e un applicazione server (per convenzione si usa lo stesso nome dell interfaccia col suffisso Impl) Definire il client che usa un riferimento all interfaccia remota per accedere all oggetto remoto

Interfaccia remota deve essere pubblica deve estendere java.rmi.remote ogni metodo deve dichiarare java.rmi.remoteexception ogni oggetto remoto passato come parametro o valore di ritorno deve essere dichiarato di tipo interfaccia remota 1 import java.rmi.remote; 2 import java.rmi.remoteexception; 3 4 public interface ExampleServer extends Remote { 5 String foo() throws RemoteException; 6 }

Lato server Inizializzo il registry Istanziare l oggetto remoto obj che implementa l interfaccia remota IR. Creare l oggetto stub tramite UnicastRemoteObject (se obj estende UnicastRemoteObject questo passo non è necessario) Registrare lo stub nel "registry" l oggetto obj potrebbe avere metodi che restituiscono riferimenti agli altri oggetti remoti, evitando così di dover passare attraverso il registry per accedere ad essi. 1 import java.rmi.server.unicastremoteobject 2 //... 3 4 LocateRegistry.createRegistry(1099); 5 IR stub = (IR) UnicastRemoteObject.exportObject(obj, 0); 6 Naming.rebind("//localhost/Server", stub);

Lato client Ottenee un riferimento al registry specificandone indirizzo IP Ottenere un riferimento all oggetto stub usando il registry 1 Registry registry = LocateRegistry.getRegistry(ip); 2 IR stub = (IR) registry.lookup("nome oggetto");

Tipi di oggetti Oggetto remoto, esportato con UnicastRemoteObject.exportObject(obj,0) Si comporta come un normale oggetto Copia serializzata, tutte le modifiche all oggetto hanno effetto solo sulla copia, non sull originale

Remarks Se il server che ha registrato l oggetto termina l esecuzione, l oggetto remoto registrato continua ad esistere finchè il registry è in esecuzione È quindi consigliabile utilizzare rebind anziché bind È anche possibile effettuare l unbind (Naming.unbind);

Esercizio Si implementi tramite RMI la segente applicazione distribuita: ogni client può inviare una stringa di testo al server il server invia ogni stringa ricevuta in broadcast ai client connessi

Esercizio Si implementi il gioco della morra cinese tramite Socket TCP