appunti delle lezioni Architetture client/server: applicazioni server



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

appunti delle lezioni Architetture client/server: applicazioni client

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

Programmazione dei socket con TCP #2

Parte II: Reti di calcolatori Lezione 12

Corso di Reti di Calcolatori L-A

Applicazioni distribuite

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Socket & RMI Ingegneria del Software - San Pietro

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

GESTIONE DEI PROCESSI

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

2.1 Configurare il Firewall di Windows

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

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

Architettura Client-Server

Parte II: Reti di calcolatori Lezione 10

Corso di Reti di Calcolatori T

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

Introduzione alle applicazioni di rete

Telematica II 17. Esercitazione/Laboratorio 6

Programmazione Orientata agli Oggetti in Linguaggio Java

Protocolli applicativi: FTP

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

Laurea Specialistica in Informatica, Tecnologie Informatiche Anno Accademico 2008/2009 Reti Applicazioni e Servizi

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

Tale attività non è descritta in questa dispensa

Java Remote Method Invocation

Architetture e applicazioni web

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

Applicazioni web. Parte 5 Socket

Manuale per la configurazione di AziendaSoft in rete

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Esercizio 2. Client e server comunicano attraverso socket TCP

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

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

Programmare con le Socket

Multithreading in Java. Fondamenti di Sistemi Informativi

Programmare con le Socket TCP in java. 2: Application Layer 1

Transmission Control Protocol

Registratori di Cassa

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

Il Session Border Controller. nella piattaforma SpreadSheetSpace. Progetto co-finanziato dal POR CRO FESR della Regione Liguria

Realizzazione siti web. Protocolli Internet

Altri tipi di connessione

Internet. Internet. Internet Servizi e Protocolli applicativi. Internet. Organizzazione distribuita

Programmare con le Socket TCP

Ottava Esercitazione. introduzione ai thread java mutua esclusione

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Controllo Winsock di Visual Basic

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

il trasferimento di file

Test di unità con JUnit4

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

iproject Gestione e Controllo Costi Cantiere iproject

Reti diverse: la soluzione nativa

Laplink FileMover Guida introduttiva

Java Virtual Machine

Lezione 1 Introduzione

RMI Remote Method Invocation

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Cenni di programmazione distribuita in C++ Mauro Piccolo

Corso sul linguaggio Java

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Esercizi su strati di trasporto e di rete

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

Corso di Informatica

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A

Come condividere l accesso internet tramite chiavetta HSPDA di 3 (o altro operatore) con un Ipod Touch via WIFI

Reti di Telecomunicazione Lezione 7

GATEWAY GSM. QuickStart

Configurazione WAN (accesso internet)

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Maschere di sottorete a lunghezza variabile

GUIDA ALLA CONNESSIONE INTERNET PER CLIENTI CONSUMER- MANUALE DI CONFIGURAZIONE PER TELEFONINO COME MODEM. pag. 2

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Manuale Helpdesk per utenti

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

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

13. Chain of Responsibility

Teleassistenza mediante PCHelpware

30 giorni di prova gratuiti, entra nel sito scarica e installa subito mypckey

VMware. Gestione dello shutdown con UPS MetaSystem

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Reti di Telecomunicazione Lezione 8

Contesto: Peer to Peer

Appunti di Informatica 1

UTC Fire & Security Italia Controllo remoto sistema Advisor Advanced via GPRS v.1.0. Versione Fw di riferimento

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

Lo scenario: la definizione di Internet

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

Java: Compilatore e Interprete

COME CONFIGURARE UN CLIENT DI POSTA

Pronto Esecuzione Attesa Terminazione

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011

L API socket ed i daemon

COSTER. Import/Export su SWC701. SwcImportExport

Nota Tecnica UBIQUITY 5 TN0019. Il documento descrive le novità introdotte con la versione 5 della piattaforma software ASEM Ubiquity.

Transcript:

Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante un, dotato di funzioni sia per l invio di richieste sia per la ricezione di risposte: 1. richiesta 2. risposta verso il Il viene attivato all esecuzione dell applicazione La logica della gestione dei al lato è più complessa Ogni applicazione deve stare in ascolto su una porta TCP nell attesa di richieste ogni volta che gli giunge una richiesta deve attivare il dialogo e nello stesso tempo dovrebbe rimettersi in ascolto, per gestire la ricezione di successive richieste Come strutturare l applicazione in modo da soddisfare questi requisiti? 2

La logica dei dal lato del Ogni applicazione : apre e tiene aperto un listener su una porta TCP, con cui si mantiene in ascolto delle richieste di connessione che gli giungono dalla rete per ogni richiesta di connessione che giunge, apre un handler e trasferisce il controllo dal listener al nuovo, delegato della gestione del dialogo con il che ha inviato la richiesta mediante il handler riceve le richieste dal e gli invia le risposte 1. richiesta di connessione 3. dialogo applicativo: scambio richieste - risposte listener handler 2. trasferimento del controllo La richiesta 1 è un operazione standardizzata, effettuata specificando l indirizzo (IP o simbolico) del e la porta TCP di destinazione il comando 2 è un operazione interamente -side, che non richiede dunque il trasferimento di alcuna informazione di natura applicativa il dialogo 3 implementa il protocollo applicativo che condividono e 3 La struttura di un applicazione Nella sua versione più semplice, un applicazione può essere strutturata così: 1. crea un listener su una porta TCP e mettilo in attesa di richieste di connessione 2. crea un handler e connettilo al listener; all arrivo di una richiesta di connessione: 2.1. ricevi la richiesta applicativa 2.2. produci la risposta 2.3. invia la risposta 2.4. chiudi il handler e torna al passo 2 4

Strumenti per l implementazione La libreria LIUC (cioè il file liuc.jar) contiene in particolare il package it.liuc.net che contiene in particolare: la classe ListenerSocketManager: di cui è necessario utilizzare il solo costruttore: ListenerSocketManager(java.lang.String port) il parametro port è il numero della porta TCP su cui mettere in ascolto il la classe HandlerSocketManager: il cui costruttore è: HandlerSocketManager(ListenerSocketManager ) I metodi della classe sono: java.lang.string ricevirichiesta() Riceve la richiesta inviata al void inviarisposta(java.lang.string msg) Invia una risposta al connesso attraverso il void chiudi() Chiude il 5 L esempio di un (semplice) echo // nei commenti sono riportati riferimenti ai passi descritti nella slide precedente public class SimpleServerEcho { public static void main(string[] args) { ListenerSocketManager listenersock = new ListenerSocketManager("7"); //1 myout.scrivilinea("in esecuzione..."); while(true) { HandlerSocketManager handlersock = new HandlerSocketManager(listenersock); //2 String inputline = handlersock.ricevirichiesta(); //2.1 String outputline = inputline; //2.2 handlersock.inviarisposta(outputline); //2.3 handlersock.chiudi(); //2.4 catch(exception e) { System.exit(-1); 6

Server multiutente Il echo precedente ha un limite fondamentale: mentre è attivo il dialogo richiesta risposta tra il e un, il stesso risulta inaccessibile a richieste di connessione inviate da altri La soluzione di questo problema richiede un rilevante cambiamento nella struttura del, che deve essere implementato come una coppia di applicazioni: 1. richiesta di connessione 3. dialogo applicativo: scambio richieste - risposte listener handler A B il A è in ascolto delle richieste di connessione che gli giungono dalla rete; ogni volta che riceve una richiesta di connessione attiva un istanza del B il B, implementato come una classe distinta, è gestito come un sottoprocesso a esecuzione autonoma (thread) dell applicazione La realizzazione di una classe eseguibile come thread è un po tecnica 2. attivazione e trasferimento del controllo 7 L esempio di un (echo) parte A public class ServerEchoA { public static void main(string[] args) { ListenerSocketManager listenersock = new ListenerSocketManager("7"); myout.scrivilinea("in esecuzione..."); while(true) { new ServerEchoB(new HandlerSocketManager(listenersock)); catch(exception e) { System.exit(-1); Si tratta dunque di una versione ridotta del precedente: invece della gestione completa del handler, il loop istanzia la classe threaded passando come parametro una nuova istanza del handler 8

L esempio di un echo parte B public class ServerEchoB extends Thread { // classe dichiarata di tipo Thread HandlerSocketManager handlersock; public ServerEchoB(HandlerSocketManager handlersock) { this.handlersock = handlersock; start(); // attiva il thread, mettendo in esecuzione il metodo run() public void run() { String inputline = handlersock.ricevirichiesta(); String outputline = inputline; handlersock.inviarisposta(outputline); myout.scrivilinea(outputline); handlersock.chiudi(); catch(exception e) { 9 Da C/S a P2P (argomento avanzato) La logica / può essere impiegata anche per creare applicazioni in architettura peer-to-peer, in pratica introducendo nell applicazione sia un sia un app listener handler verso un altra app Nella sua versione più semplice, un applicazione di questo genere (per esempio un programma di chat) può essere strutturata così: crea un oggetto di una classe threaded entra nel loop del quando viene creato, l oggetto della classe attiva il thread, attivando un listener su una porta specificata e quindi entrando nel loop del 10