Telematica II 15. Esercitazione/Laboratorio 5



Documenti analoghi
Programmazione dei socket con TCP #2

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

Telematica II 12. Esercitazione/Laboratorio 4

Reti di Telecomunicazione Lezione 7

Telematica II 17. Esercitazione/Laboratorio 6

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Corso di Reti di Calcolatori T

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

10 - Programmare con gli Array

Generics & Collections

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella)

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

GESTIONE DEI PROCESSI

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

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Esercitazione n 4. Obiettivi

Introduzione alle applicazioni di rete

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

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Esercizio 2. Client e server comunicano attraverso socket TCP

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

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

SAPIENZA Università di Roma, Facoltà di Ingegneria

I file di dati. Unità didattica D1 1

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 10

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Cenni di programmazione distribuita in C++ Mauro Piccolo

Algoritmi di Ricerca. Esempi di programmi Java

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Corso di Informatica

Applicazioni distribuite

Funzioni in C. Violetta Lonati

Prova di Laboratorio di Programmazione

Introduzione al Linguaggio C

Reti di Telecomunicazione Lezione 6

appunti delle lezioni Architetture client/server: applicazioni server

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Socket & RMI Ingegneria del Software - San Pietro

Protocolli applicativi: FTP

Introduzione ai tipi di dato astratti: applicazione alle liste

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

La struttura dati ad albero binario

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Informatica per la comunicazione" - lezione 13 -

Protezione. Protezione. Protezione. Obiettivi della protezione

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Archivio CD. Fondamenti di Programmazione

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Richiesta pagina PHP (es: index.php)

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

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

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

Architettura Client-Server

Gestione degli indirizzi

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

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Reti di Telecomunicazione Lezione 8

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Corso sul linguaggio Java

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

GESTIONE INFORMATICA DEI DATI AZIENDALI

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== ? &7$ %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&&

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

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

Reti di Calcolatori. Il Livello delle Applicazioni

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Allocazione dinamica della memoria - riepilogo

Altri tipi di connessione

CORSO DI PROGRAMMAZIONE JAVA

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

20 - Input/Output su File

appunti delle lezioni Architetture client/server: applicazioni client

Grammatica di base: Pointers

Bibliografia: Utenti e sessioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

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

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

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

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione [6] Client/Server con Socket

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

Esercizi di JavaScript

Transcript:

Protocollo FTP FTP Client TCP control connection (port 21) FTP Server Telematica II 15. Esercitazione/Laboratorio 5 File System locale TCP data connection (port( 20) File System remoto La connessione di controllo è persistente ed identifica una sessione (necessaria autenticazione mediante login / logout) La connessione dati non è persistente, nell ambito di una sessione, per ogni ambito file trasferito è creata una nuova connessione dati (il server è in ascolto sulla Corso di Laurea in Ingegneria Informatica porta 20 in attesa di nuove connessioni) A.A. 2009-2010 2 Semestre Prof. Giovanni Pascoschi 2 Esercitazione su protocollo FTP lato server #2 Esercitazione 7 MiniFTPServer richiesta di connessione di controllo su porta 21 client socket internet socket server Socket server FTP Realizzare un mini server FTP che gestisce solo il login anonimo ed i comandi PORT, RETR e QUIT (esercitazione 11FS) connessione dati stabilita su porta 20 del server 3 4

Esercitazione su protocollo FTP lato server #1 Esercitazione 7 MiniFTPServer (UML) Per utilizzare le classi JAVA utili alla gestione dei socket: import java.net.*; Server miniftp (gestisce solo i comandi USER, PASS, PORT, RETR, QUIT) 1. Creare un ServerSocket (servsocket) indicando il numero di porta 2. Mettersi in attesa di connessione da parte del client; a connessione stabilita si ottiene un oggetto di classe Socket (link) 3. Ottenere gli stream di input e output associati al Socket 4. Comunicare con il client usando gli stream di I/O per leggere (=ricevere) e scrivere (=inviare) dati processa richiesta (processrequest) 5. Nel caso di comando RETR, inviare il file su una nuova connessione Socket (datasock) sul server 6. Chiudere il Socket datasock sul server MiniFTPServer + ServerSocket servsocket - String ftproot - boolean running - boolean session - boolean userflag - boolean login - boolean portflag - String username - InetAddress clientaddr - int clientdataport oggetto servsocket percorso root FTP flag di stato username fornito dal client indirizzo IP client porta client + MiniFtpServer(String ftproot) costruttore + void main(string[ ] args) metodo main + void start( ) metodo di avvio del server + void stop( ) metodo di fermata del server + void serve( ) metodo nucleo centrale del server + void processrequest(string request, Printwriter response) metodo di elaborazione della richiesta metodo di invio al client + void send(stringbuffer b) 5 6 Esercitazione 7 MiniFTPServer (parsing) Esercitazione 7 MiniFTPServer (parsing) #1 Problema (parsing di un testo): Abbiamo una riga di testo nel formato... PORT n1,n2,n3,n4,n5,n6 int address[ ] = new int[6]; // array di 6 interi int start = 5; // indice iniziale della sottostringa dove i primi 4 numeri costituiscono l indirizzo IP e i successivi due la porta da utilizzare con la formula n5*256+n6. Implementare un programma in Java che permette di ricavare clientaddress di classe InetAddress da n1, n2, n3 e n4 e clientdataport da n5 e n6. int i; for (i=0; i<5; i++) { int end = request.indexof(",", start); //estrazione dell indice di, address[i] = Integer.parseInt(request.substring(start, end)); //estrazione sottostringa dalla posizione start alla posizione end-1 start = end + 1; // incremento di start alla sottostringa successiva (dopo la, ) } 7 8

Esercitazione 7 MiniFTPServer (parsing) #2 Esercitazione 7 MiniFTPServer address[5] = Integer.parseInt(request.substring(start)); // estrazione ultima sottostringa partire dalla posizione start for (i=0; i<6; i++) { if (address[i]<0 address[i]>255) { //check validità numeri throw new Exception("Argomento non valido"); } } clientaddr = InetAddress.getByName(address[0] + "." + address[1] + "." + address[2] + "." + address[3]); //ind. IP client clientdataport = 256*address[4] + address[5]; //porta client Viene illustrato un esercizio MiniFTPServer sulla gestione del protocolllo FTP sul server (esercitazione 11FS) 9 10 Esercitazione 7 MiniFTPServer Q&A Esercitazione su protocollo FTP lato server (riepilogo) nell esercitazione e rispettata la RFC 959 FTP? accesso autenticato? implementati tutti i comandi? sono usate le porte 21 e 20 del server come specifica? struttura tipica di un server TCP la logica del protocollo applicativo (FTP) è incapsulata in un metodo (processrequest) è piu comodo gestire il protocollo applicativo per utilizzare una specifica porta nel socket di tipo client sul server è necessario usare il costruttore socket a 4 parametri: public Socket(InetAddress host, int port, InetAddress interface, int localport) ad ogni passo distingue quale comando è stato ricevuto e lo esegue variabili di stato della sessione (da cui dipende l'esito della richiesta) gestione codici di risposta e di errore funzionerà il client ftp standard con questo mini server FTP? 11 implementare per esercizio il lato client di questo miniserver FTP 12

Pausa Sessioni di esame luglio 2010 giorno 8/7/2010 aula L dalle ore 14.10 giorno 20/7/2010 aula L dalle ore 14.10 Pausa / Questionario il progetto deve essere consegnato almeno 10 giorni prima dell esame orale il progetto (funzionante) deve comprendere oltre che i sorgenti, anche una breve relazione esplicativa le modalità complete di iscrizione all esame compariranno sul sito del corso 13 14 JAVA Collections Framework La Standard Template Library in C++ (STL) La Standard Template Library (STL) comprende tre tipologie di componenti: Contenitori (p.e. vector, list, map) Iteratori Algoritmi Collections Framework I contenitori sono strutture dati come vettori, liste, pile, code e mappe, implementati con il meccanismo dei template, in grado di memorizzare oggetti di qualsiasi tipo Gli iteratori sono puntatori utilizzati per accedere e manipolare gli oggetti memorizzati nei contenitori in maniera semplificata Gli algoritmi comprendono funzioni d utilità per il conteggio, l ordinamento, la ricerca, ed altre operazioni standard sui contenitori. La risposta JAVA alla STL-C++ è la Collections Framework 15 16

JAVA Framework Collections JAVA Framework Collections - tipologia Framework (a livello software):... is a general system of components and architectural solutions that provides development tools to programmers for use with a relatively wide range of applications soluzioni architetturali utili ai programmatori Collection:... is any collection of elements... insieme di elementi (oggetti) utili nella gestione a livello software Collection, Iterator Lists, ListIterator List ArrayList LinkedList Stack Queue, PriorityQueue Sets Set TreeSet HashSet tutte queste classi ed interfacce fanno parte del package java.util. I nomi in corsivo riguardano le interfacce. 17 18 Maps Map TreeMap HashMap JAVA Framework Collections - gerarchia Generics JAVA le Colletions Framework sono costruite sulla base di classi astratte rappresentate da interfacce che le descrivono in base alle operazioni da esse supportate prima della versione JAVA 5 le collections usavano il tipo object (tipo generale di oggetto) a partire da JAVA ver.5, una collection contiene oggetti di uno specifico tipo. Una classe o interfaccia collection puo usare il tipo di oggetto come parametro E è il tipo di oggetto (p.e. E = String oppure Auto, Dipendente, ecc) si parla in questo caso di generics (in maniera analoga alle classi Template in C++) Collection<E> List<E> Stack<E> Set<E> una map (mappa / array parallelo), che è una specie di dizionario (chiave / valore), considera due parametri come tipo di oggetto: Map<K,V> 19 20

La classe ArrayList #1 La classe ArrayList #2 un ArrayList<E> rappresenta una lista come un array dinamico di oggetti di tipo E, cioè che si ridimensiona quando è pieno (è simile al vector della STL C++) i metodi principali di un ArrayList sono: void add(int indice, E ogg) inserisce l oggetto di classe E nella lista in posizione indice gli elementi successivi vengono shiftatinessun elemento è sovrascritto fornisce un accesso random agli elementi E get(int indice) restituisce l oggetto memorizzato nella lista in posizione indice implementa tutti i metodi di List<E> da non confondersi con LinkedList lista doppiamente linkata circolare ArrayList<String> al = new ArrayList<String>( ); int indexof(object ogg) restituisce l indice della prima istanza di ogg nell elenco. Se ogg non esiste, restituisce -1 E remove(int indice) elimina l oggetto nella posizione indice gli altri elementi vengono scalati/compressi E set(int indice, E ogg) assegna ogg all elemento presente nella posizione indice sovrascrivendolo List<E> sublist(int inizio, int fine) restituisce un elenco/lista di elementi tra inizio e fine 21 22 Iteratori #1 Iteratori #2 un iteratore (iterator) può essere immaginato come un indice posto tra due elementi consecutivi all atto della costruzione, si trova prima del primo elemento la chiamata al metodo next() provoca l avanzamento alla posizione successiva (se esiste) o la generazione di un eccezione remove() elimina l ultimo elemento restituito (quello che precede il puntatore, se esiste) un iteratore èun oggetto che aiuta a scorrere tutta la collection (ossia processare tutti gli elementi in sequenza) esempio del foreach for(tipo var-itr : collection) { istruzioni1;... }; for(int x: numeri) { sum += x; } // scorre tutto l array numeri 23 24

Iteratori #3 Algoritmi nella JCF come si crea un iterator? si richiama il metodo iterator di ciascuna collection List<String> al = new ArrayList<String>( ); Iterator<String> itr = al.iterator ( ); per usare gli iteratori o si usano i cicli foreach, oppure si usa il metodo hasnext( ) per verificare se esiste un elemento successivo nella collection nella classe generale Collections esistono diversi algoritmi già pronti quelli piu noti sono (metodi statici): Collections.sort(argList); // ordina in ordine crescente Collections.reverse(argList); // inverte l ordine degli elementi Collections.shuffle(argList); // elementi in ordine pseudocasuale System.out.println(itr.next( )); // stampa l elemento successivo nella lista 25 26 Map nella JCF Map principali metodi nella JCF una map (interface) non è una collection intesa come insieme singolo è una corrispondenza tra un insieme di chiavi e un insieme di valori solo un unico valore puo corrispondere a una determinata chiave; diverse chiavi possono essere mappate sullo stesso valore keys values l implementazione piu usata è data da una classe HashMap Map<String,Integer> argcount = new HashMap<String,Integer>( ); i metodi piu usati sono: V get(object k) restituisce il valore V associato ad un oggetto chiave k V put(k k, V v) inserisce una voce nella mappa sovrascrivendo il valore precedente associato alla chiave k restituisce null se la chiave non esisteva, altrimenti il valore precedente boolean isempty( ) restituisce true se la map è vuota, altrimenti false void clear( ) elimina tutte le coppie chiave/valore V remove (Object k) elimina la voce con chiave k int size( ) restituisce il numero di coppie chiave/valore presenti nella mappa 27 28

Esercitazione 8 JAVA Collections Framework Riepilogo della lezione Esercitazione/Laboratorio 5 Viene illustrato un esercizio CollectionsExample sulla gestione delle Collections Framework (esercitazione 6FS) Gestione protocollo FTP su server Esercitazione sulla gestione del protocollo FTP lato server JAVA Collections Framework (panoramica) Esercitazione sulle JAVA Collections Framework 29 30 Fine della lezione Esercizio n.12 Realizzare un applicazione FTP client che possa interfacciarsi con il mini server FTP visto a lezione Domande? 31 32

Esercizio n.13 Esercizio n.14 33 34