Programmazione distribuita in Java

Slides:



Advertisements
Presentazioni simili
Text Processing Google APi
Advertisements

1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Socket Java Alberto Ferrari.
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 7 Programmazione con metodi e classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Programmazione Ingegneria TLC
Alcune Classi Standard Object, Vettori. Esercizio dellultima volta Superclasse Persona Sottoclasse Libro.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
L'interfaccia socket in Java
Come programmare servizi di rete?
Lo sviluppo di applicazioni distribuite secondo il paradigma a scambio di messaggi Gianpaolo Cugola
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola.
Richiami di TCP Networking in Java Elementi di base.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
J0 1 Marco Ronchetti - Java Networking TCP.
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
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) JAVA: i commenti Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
JAVA C import java.util.*; #include <stdio.h>
2: Application Layer1 DNS: Domain Name System Persone: molte mezzi di identificazione: m CF, nome, # Passaporto Host, router Internet: m Indirizzi IP (32.
Lettura e scrittura - Stream
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
2: Application Layer1 DNS: Domain Name System Identificazione Persone: m Cod.Fiscale, nome, Passaporto Internet hosts, routers: m indirizzo IP (32 bit)
Selezione (=scelta) con “if-else”
Docente: Gabriele Lombardi
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Streams e Input/output
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
JAVA E LA RETE L’architettura Java è network-ready
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (9) Mauro Lorenzutti. 30/09/2005Corso Java - Mauro Lorenzutti2 Scaletta I/O Evoluto Serializzazione Comunicazioni via socket JUnit.
Cosa è una applicazione distribuita?
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Diagramma di flusso del problema del Supermercato.
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.
Corso di Programmazione in Java – Esercizio n° 001
1 Applet ed HTML Fondamenti di Informatica Corso D.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Stack Già visto l’altra volta senza gestione eccezioni, le prime tre slide servono solo come ripasso, dalla quarta argomento nuovo class Stack { int data[];
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Gestione dei thread in Java
1 Windows Socket Programming Corso di Sistemi di Elaborazione delle Informazioni a.a 2006/2007 Autori: Alberto Colombo Fulvio Frati.
Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione 8.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione 9.
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.
I socket.
Corso Java Esercitazione.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Il Livello di Trasporto
Dalla programmazione tradizionale al paradigma OO
Transcript della presentazione:

Programmazione distribuita in Java Socket & Client-Server

Strumenti per networking Libreria java.net Socket (Astrazione per una “presa” di comunicazione) Serializzazione

Socket Per comunicare si apre una socket specificando Indirizzo IP Porta A quell’indirizzo, su tale porta, ci deve essere in ascolto un server Usare gli stream associati alla socket per leggere e scrivere dati

Lato Server Creare un oggetto ServerSocket, specificando il numero di porta ServerSocket serv_socket = new ServerSocket(port) Chiamare accept() per restare in attesa di connessioni Socket cli_socket = serv_socket.accept() Quando accept() ritorna la connessione col client è stabilita accept() restituisce una socket per comunicare col client

Lato Client Creare un oggetto di classe Socket, specificando indirizzo e porta Socket sock = new Socket(“myhost.dsi.it”, 1234) Oppure specificando l’indirizzo IP: Socket sock = new Socket(“150.145.63.148”, 1234) Quando l’oggetto è costruito la connessione col server è stabilita

Comunicazione Recuperare le stream associate alla socket: InputStream istream = sock.getInputStream() OutputStream ostream = sock.getOutputStream() Costruire altri stream su quelli della socket PrintWriter out = new PrintWriter (ostream,true); out.println( “Ciao a tutti" ); // si usa esattamente come la System.out.println BufferedReader in = new BufferedReader (istream); in.readLine(); // legge una linea di testo dal socket

java.net.Socket (1) Socket(String host, int port): crea un socket e lo connette all’host ed alla porta specificati; host è un hostname (per es. “www.deis.unical.it”) oppure un indirizzo IP (per es. “160.97.27.7”). Socket(InetAddress address, int port): crea un socket e lo connette all’indirizzo ed alla porta specificati. void close(): chiude il socket. InetAddress getInetAddress(): restituisce l’indirizzo a cui è connesso il socket. int getPort(): restituisce la porta remota a cui è connesso il socket. int getLocalPort(): restituisce la porta locale del socket.

java.net.Socket (2) InputStream getInputStream(): restituisce lo stream di input del socket; questo stream è utilizzato per leggere i dati provenienti dal socket. OutputStream getOutputStream(): restituisce lo stream di output del socket; questo stream è utilizzato per scrivere dati nel socket. void setSoTimeout(int timeout): imposta il timeout per operazioni di lettura dal socket; se il tempo specificato trascorre genera una InterruptedIOException. String toString(): restituisce una rappresentazione del socket del tipo “Socket[addr=hostname/192.168.90.82,port=3575,localport=1026]”

Connessione ad un time-server con Telnet telnet time-A.timefreq.bldrdoc.gov 13 52667 03-01-28 12:05:37 00 0 0 832.0 UTC(NIST) * Connessione all'host perduta.

Connessione ad un time-server con Java import java.io.*; import java.net.*; public class SocketTest { public static void main (String args[]) { try { Socket s = new Socket ("time-A.timefreq.bldrdoc.gov",13); BufferedReader in = new BufferedReader (new InputStreamReader (s.getInputStream())); boolean more = true; while (more) { String line = in.readLine(); if (line == null) more = false; else System.out.println (line); } } catch (IOException e) { System.out.println(e); }

Timeout di socket Socket s = new Socket (…); s.setSoTimeout(10000); Le operazioni di lettura che seguono generano una InterruptedIOException quando è stato raggiunto il timeout. try { String line; while (line = in.readLine()) != null) { process line } } catch (InterrupedIOException e) { react to timeout Questo timeout può essere settato su un socket già istanziato. Tuttavia si potrebbe verificare un blocco indefinito già in fase di creazione del socket, fino a quando non si stabilisce la connessione con l’host.

java.net.ServerSocket ServerSocket(int port): crea un server socket che controlla una porta. Socket accept(): rimane in attesa di una connessione, e restituisce un socket tramite il quale si effettua la comunicazione. void close(): chiude il server socket. InetAddress getInetAddress(): restituisce l’indirizzo locale di questo server socket. int getLocalPort(): restituisce la porta locale di questo server socket.

EchoServer (1) import java.io.*; import java.net.*; public class EchoServer { public static void main(String[] args ) { try { ServerSocket s = new ServerSocket(8189); Socket incoming = s.accept( ); BufferedReader in = new BufferedReader (new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter (incoming.getOutputStream(), true /* autoFlush */); out.println( “Connessione Accettata. Scrivi addio per finire" );

EchoServer (2) boolean done = false; while (!done) { String line = in.readLine(); if (line == null) done = true; else { out.println(“messaggio:" + line); if (line.trim().equals(“addio")) } } // while incoming.close(); } catch (Exception e) { System.err.println(e); } } // main } // class

EchoClient (1) import java.io.*; import java.net.*; public class EchoClient { public static void main (String args[]) { try { InetAddress myself = InetAddress.getLocalHost(); Socket s = new Socket (myself.getHostAddress(), 8189); System.out.println("Richiesta connessione in corso..."); // Se non si lavora in locale immettere il corretto // indirizzo IP del server invece di myself.getHostAddress() BufferedReader in = new BufferedReader (new InputStreamReader (s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(), true);

EchoClient (2) boolean more = true; while (more) { String line = in.readLine(); if (line == null) more = false; else System.out.println ("Ricevuto dal server: " + line); String mess = Console.readString(">"); out.println(mess); if (mess.trim().equals("addio")) } System.out.println("Chiusura connessione"); s.close(); } catch (IOException e) { System.out.println(e); }