Docente: Gabriele Lombardi

Slides:



Advertisements
Presentazioni simili
Prof. Carla Fanchin – L.S. Tron
Advertisements

Indirizzamento LAN e ARP
IL PACKAGE java.io Il package java.io definisce quattro
Corso di Fondamenti di Informatica
Socket Java Alberto Ferrari.
Java Stream e File.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Programmazione con socket
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
IL NOSTRO LABORATORIO Di INFORMATICA. Nel nostro laboratorio abbiamo 24 postazioni con dei computer di tipo Desktop con queste caratteristiche: Sistema.
IL NOSTRO LABORATORIO. Di INFORMATICA..
IL NOSTRO LABORATORIO Di INFORMATICA. Presentazione Nel nostro laboratorio abbiamo 24 postazioni con dei computer di tipo Desktop con queste caratteristiche:
ING. CARLO MANFUCCI COMUNE DI GROSSETO
2-1 Trasferimento di file: ftp Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All Rights.
Come programmare servizi di rete?
La rete del futuro nellautonomia scolastica Sezione propedeutica I fondamentali e concetti di TCP/IP.
Lo sviluppo di applicazioni distribuite secondo il paradigma a scambio di messaggi Gianpaolo Cugola
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
INTERNET e i suoi Servizi Docente Esperto: Simona Riolo Docente Tutor: Alfio Messina Lezione #1/ I.C.S. G. Verga - Viagrande (CT)
Architettura del World Wide Web
Ingegneria del software I
Primi esempi di interfacce grafiche con Android
© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi
© CEFRIEL Alcune API di base nel JDK J2SE Docente: Gabriele Lombardi
© CEFRIEL Java: il linguaggio Docente: Gabriele Lombardi
© CEFRIEL Concorrenza (cenni) Docente: Gabriele Lombardi
RETI E INTERNET.
Programmazione distribuita in Java
4 Cosa è una rete? ã Punto di vista logico: sistema di dati ed utenti distribuito ã Punto di vista fisico: insieme di hardware, collegamenti, e protocolli.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
JAVA E LA RETE L’architettura Java è network-ready
Programmazione in Java (9) Mauro Lorenzutti. 30/09/2005Corso Java - Mauro Lorenzutti2 Scaletta I/O Evoluto Serializzazione Comunicazioni via socket JUnit.
Corso di Informatica per Giurisprudenza Lezione 7
POSTA ELETTRONICA PER GLI STUDENTI DI ECONOMIA POSTA SU HOST b Host e terminali La base dati dei messaggi risiede sul mainframeLa base dati dei messaggi.
Cosa è una applicazione distribuita?
1 Ripassino Reti di Computer Carasco 19/02/ Che cosa è una rete informatica? Una rete informatica è un insieme di computer connessi tra di loro.
Modulo n – U.D. n – Lez. n Nome Cognome – titolo corso.
Internet: una panoramica
Distributed System ( )7 TCP/IP four-layer model.
Come comunicano i processi ?
Creato da Riccardo Nuzzone
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
CORSO DI INFORMATICA Internet e Posta Elettronica
Greco Rodolfo 2002 Application Trasport Network Phisic HTTP IP UDPTCP DNS SNAP MAC ARP L’utente fa una richiesta di pagina.
1 Storia di Internet Internet non è un’invenzione degli anni ’90….. Nata dagli studi di un’agenzia detta ARPA (Advanced Research Projects Agency) Internet.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
InternetInternet Sede: Salvo D’acquisto 2010/2011 Docente: Vito Monno.
Producer – Consumer System Di Carlo Matteo CdLS Ingegneria Informatica (0234) Reti di Calcolatori LS A.A. 2004/2005.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 -Socket library Ernesto Damiani Lezione 1.
Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione.
Servizi Internet Claudia Raibulet
Progetto e Realizzazione di un servizio di Chat Progetto di: Nicoli Leonardo Corso di: Reti di Calcolatori L-S.
Reti II Stefano Leonardi
WWW Introduzione agli URI Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Gli Universal Resource Identifier (URI)
JDICS Java Dynamic Infrastructure for C/S systems Laura Galli matr Reti di calcolatori LS, Prof. A.Corradi A.A
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione 9.
10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Il centro stella puo’ essere realizzato con : Lavora solo a livello fisico (layer 1) : ripete esattamente su tutte le proprie porte il segnale arrivato.
Protocolli di rete. Sommario  Introduzione ai protocolli di rete  Il protocollo NetBEUI  Il protocollo AppleTalk  Il protocollo DLC  Il protocollo.
1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione puo’
I NTERNET Rete interconnessa che permette il collegamento tra due host eterogenei, appartenenti a reti differenti separati anche da grande distanze. Internet.
Applicazione Presentazione Sessione Trasporto Rete Data link Fisico OSI Processo / Applicazione Trasporto Rete- Internet Interfaccia di.
INTERNET PROTOCOL SUITE FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni Docente: Prof. Pasquale Daponte Tutor:
Sezione propedeutica I fondamentali e concetti di TCP/IP.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Slide #: 1/232 Internet - Architettura, principali protocolli e linee evolutive Nicola Blefari Melazzi Copyright © 2005 – The McGraw-Hill Companies srl.
Transcript della presentazione:

Docente: Gabriele Lombardi lombardi@dsi.unimi.it Networking (cenni) Docente: Gabriele Lombardi lombardi@dsi.unimi.it © 2010 - CEFRIEL

The present original document was produced by CEFRIEL and the Teacher for the benefit and internal use of this course, and nobody else may claim any right or paternity on it. No right to use the document for any purpose other than the Intended purpose and no right to distribute, disclose, release, furnish or disseminate it or a part of it in any way or form to anyone without the prior express written consent of CEFRIEL and the Teacher. © copyright Cefriel and the Teacher-Milan-Italy-23/06/2008. All rights reserved in accordance with rule of law and international agreements. © 2010 - CEFRIEL

Sommario Problematiche Strumenti di base Il client Il server SLIDE CONTENUTO Problematiche Problematiche di comunicazione sulla rete Strumenti di base URI, URL, indirizzi e porte Il client Usare le socket come client Il server Usare le socket nei server Modelli di server Server sequenziali e concorrenti © 2010 - CEFRIEL

Problematiche di networking Comunicazione: trasferimento dati su una tratta, instradamento; assegnazione di un indirizzo per ogni host (IP): indirizzi del tipo 159.149.140.6 (IPv4); 4 numeri tra 0 e 255; associazione nomi (DNS); utilizzo di protocolli well-known (ftp, HTTP, …). Altre problematiche: trasferimento dati “manualmente”: utilizzo stream (java.io.*) tramite socket; conversione dati host2network e network2host; accesso a parametri di basso livello (campi dei pacchetti); Authentication, Permissions, Proxy, Cookies, … © 2010 - CEFRIEL

Strumenti di base: URI e URL URI (Unified Resource Identifier): rappresenta l’identificativo univoco di una risorsa; è della forma: [scheme:]scheme-specific-part[#fragment] mailto:java-net@java.sun.com in particolare la versione gerarchica è: [scheme:][//authority][path][?query][#fragment] http://java.sun.com/j2se/1.3/ La classe java.net.URI: permette parsing e validazione dell’URI; permette di ottenerne l’URL associato. URL (Unified Resource Locator): rappresenta la locazione da cui è possibile reperire una risorsa; segue lo schema gerarchico di URI; permette di accedere ai dati della risorsa tramite stream: URL url = new URL(“http://www.google.com”); InputStream is = url.openStream(); © 2010 - CEFRIEL

Strumenti di base: indirizzi InetAddress, Inet4Address, Inet6Address: indirizzi IP (Interenet Protocol v4 e v6); generato tramite factory method: InetAddress addr1 = InetAddress.getByName(“159.149.140.6”); InetAddress addr2 = InetAddress.getByName(“google.com”); si noti che addr2 viene risolto tramite DNS; porte (interi positivi): l’indirizzo IP identifica un host, la porta identifica il servizio richiesto (processo in ascolto sulla porta); InetSocketAddress: rappresenta un indirizzo di una socket; è definito come unione di un IP e una porta: InetSocketAddress addr = new InetSocketAddress( InetAddress.getByName(“google.com”), 80); © 2010 - CEFRIEL

Socket attive (client) java.net.Socket: rappresenta la “cornetta del telefono”, un capo della comunicazione bidirezionale realizzabile con TCP/IP; è identificata da un indirizzo InetSocketAddress; stabilisce la connessione con un altro InetSocketAddress; consente di aprire due canali di comunicazione: Socket soc = new Socket(“www.google.com”, 80); InputStream is = soc.getInputStream(); OutputStream os = soc.getOutputStream(); a questo punto la comunicazione è stabilita; delle eccezioni possono indicarci il fallimento; va chiusa al termine della comunicazione: soc.close(); non si può chiudere parzialmente questo tipo di socket (al più disabilitare input oppure output). java.net.DatagramSocket, java.net.MulticastSocket: strumenti per la comunicazione a datagramma (UDP). © 2010 - CEFRIEL

Socket attive (client) // Creo la socket di comunicazione col server: InetAddress indirizzo = InetAddress.getByName(servername); Socket soc = new Socket(indirizzo, porta); // Chi siamo? System.out.println("Io sono: " + soc.getLocalAddress() + "/" + soc.getLocalPort()); System.out.println("Io cerco: " + soc.getInetAddress() + "/" + soc.getPort()); // Ottengo gli stream di comunicazione: OutputStream os = soc.getOutputStream(); InputStream is = soc.getInputStream(); // Un po’ di comodità! Writer writer = new OutputStreamWriter(os); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); // Comunico la richiesta HTTP: String richiesta = inizioRichiesta + risorsa + "\n\n"; writer.write(richiesta); writer.flush(); // Lettura della risposta: String linea; while((linea=reader.readLine())!=null) { System.out.println(linea); } // Fine: reader.close(); writer.close(); vedere 05_Networking\ClientFuffo con: esempio di base client esempio di base server © 2010 - CEFRIEL

Socket passive (server) java.net.ServerSocket: rappresentano servizi in ascolto per richieste; non vengono usate per comunicare … … ma per accettare comunicazioni; ServerSocket ssoc = new ServerSocket(numPorta); Socket soc = ssoc.accept(); // Attendo l’arrivo di una richiesta! a questo punto soc è connessa con il client. SocketImpl, DatagramSocketImpl: implementazioni astratta delle socket; consente di sostituire l’implementazione concreta; utile se si vuole usare una propria implementazione. SocketImplFactory, DatagramSocketImplFactory: interfacce da implementare se si vuole realizzare una propria implementazione delle socket TCP e UDP. © 2010 - CEFRIEL

Socket passive (server) // Creo la socket: ServerSocket ss = new ServerSocket(porta); while (true) { // Per sempre! // Aspetto che qualcuno si connetta a me: Socket soc = ss.accept(); System.out.println("Io sono: " + soc.getLocalAddress() + "/" + soc.getLocalPort()); System.out.println("Io cerco: " + soc.getInetAddress() + "/" + soc.getPort()); // Ottengo gli stream di comunicazione: OutputStream os = soc.getOutputStream(); InputStream is = soc.getInputStream(); // Un po’ di comodità! Writer writer = new OutputStreamWriter(os); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); // Ottengo in ingresso i dati: System.out.println("Richiesta: " + reader.readLine()); // Mando una risposta: writer.write("Ciao!\n"); writer.flush(); // Chiudo tutto: reader.close(); writer.close(); } vedere 05_Networking\ClientFuffo con: esempio di base client esempio di base server vedere 04_Concurrency\Chat con: server concorrente client che comunica col server mini-protocollo proprietario © 2010 - CEFRIEL

Tipologie di server Lo scopo del server è quello di soddisfare richieste … … più richieste possono arrivare assieme. ServerSocket mantiene una lista di richieste pendenti: quindi il precedente programma soddisfa tutte le richieste in arrivo (entro i limiti) senza perderne nessuna … … ma ogni client deve attendere “in fila” prima di poter essere servito dall’unico processo. La soluzione consiste nel cambiare modello di server: i modelli classici sono: server sequenziale (quello mostrato precedentemente); server concorrente (delega il compito di rispondere a un processo); server concorrente con select (ascolto su porte multiple). Soluzione: passare al modello concorrente. © 2010 - CEFRIEL

Esempio di server concorrente // Faccio sempre la stessa cosa: while (true) { try { // Ascolto la socket: Socket soc = ssoc.accept(); // Gestisco la comunicazione in un thread separato: esecutore.execute( new GestoreMessaggioEntrante(soc) { public void run() { try { // Connessione stabilita, ottengo il messaggio: ObjectInputStream ois = new ObjectInputStream(soc.getInputStream()); Messaggio msg = (Messaggio)(ois.readObject()); // Fine comunicazione: ois.close(); // Gestisco il messaggio: System.err.println("Ricevuto messaggio da: " + msg.getMittente()); ricevuto(soc.getInetAddress(),msg); } catch (Exception e) { e.printStackTrace(); } } }); vedere 04_Concurrency\Chat con: server concorrente client che comunica col server mini-protocollo proprietario © 2010 - CEFRIEL