Reti di Calcolatori L-A Compito A Parte Java. Compito A. Parte C. Cognome: Matricola:
|
|
- Franca Clementina Riva
- 5 anni fa
- Visualizzazioni
Transcript
1 Cognome: Nome: Matricola: Reti di Calcolatori L-A Compito A Parte Java Compito A Sviluppare un applicazione C/S che permetta al client di recuperare dal server: informazioni relative agli orari di un corso (orari_corso); informazioni relative a quali corsi si tengono in un giorno (corsi_giorno). E obbligatorio mettere Cognome Nome Matricola e compito all inizio di ogni file sorgente, pena la non valutazione del compito, che può essere stampato in modo automatico, solo in caso siano presenti gli elementi detti sopra Leggete con attenzione le specifiche del problema prima di impegnarvi a testa bassa nello sviluppo delle singole parti. Naturalmente, i componenti da consegnare devono essere stati provati. Si devono consegnare tutti i file sorgente e tutti gli eseguibili prodotti (per favore, solo quelli relativi ai file sorgente consegnati!!!). La prova intende valutare le capacità progettuali e di programmazione sia in ambiente Java che in ambiente C, pertanto è consigliabile sviluppare, almeno in parte, entrambe le soluzioni richieste. In entrambi gli esercizi, sia Java che C, si effettuino gli opportuni controlli sui parametri della richiesta e si gestiscano le eccezioni, tenendo presente i criteri secondo cui si possa ripristinare il funzionamento del programma oppure si debba forzarne la terminazione. **************************************************************************************************************** La struttura dati, da implementare opportunamente sia in Java che in C, a cui fanno riferimento gli esercizi rappresenta la tabella degli orari di una palestra, e contiene i corsi nella varie giornate della settimana: ORE LUN MAR MER GIO VEN 10 yoga add. & stretch. yoga add. & stretch yoga 11 gag total body ginnastica dolce gag ginnastica dolce body sculpt step body sculpt step body sculpt ginnastica dolce ginnastica dolce gag 16 spinning spinning spinning 17 add. & stretch. yoga add. & stretch. yoga add. & stretch. 18 total body aerobica total body aerobica total body 19 step total body step total body step 20 spinning funky spinning funky spinning Con più dettaglio, si sviluppino: un client e un server che realizzino il servizio orari_corso usando messaggi datagram: il client chiede ciclicamente da console all utente il nome del corso di cui vuole conoscere gli orari, fino alla fine del file di input da tastiera. Il client invia la richiesta al server e stampa a video l esito dell operazione in base alla risposta ottenuta dal server; il server effettua la selezione dei dati richiesti dalla tabella dei corsi, e invia la risposta (una stringa contenente una sequenza di giorni e orari) al client. un client e un server che realizzino il servizio corsi_giorno usando una connessione: il client chiede ciclicamente da console all utente il giorno di cui vuole conoscere i corsi, fino alla fine del file di input da tastiera. Il client invia la richiesta al server e stampa a video le informazioni ottenute dal server; il server effettua la selezione dei dati richiesti dalla tabella dei corsi, e li invia al client. Parte C Utilizzando RPC sviluppare un applicazione C/S che consenta di effettuare operazioni remote relative ai corsi, realizzate da due diverse rpc: Corsi corsi_orario(int orario) int prenota_spinning(prenotazione p) corsi_orario permette di ottenere i corsi relativi ad un certo orario. Ha come valore di ritorno una struttura dati, Corsi, che raccoglie i nomi dei corsi relativi ad un certo orario (cinque stringhe). prenota_spinning consente di prenotare una lezione di spinning, il cui numero di posti, 20 per ogni lezione, è memorizzato in un vettore di interi decrementati per ogni prenotazione. Ha come parametro una struttura dati, Prenotazione, che contiene giorno e orario della lezione (una stringa e un intero), e restituisce un intero pari al numero di posti ancora disponibili dopo il decremento in caso di esito positivo, e 1 in caso di posti esauriti; Più in dettaglio: il client chiede ciclicamente all utente i dati della richiesta, ovvero i dati della prenotazione oppure l orario di interesse, fino alla fine del file di input da tastiera. Per ogni ciclo, in base al tipo di operazione richiesta dall utente, esegue una chiamata all opportuna procedura remota, passando come parametro un intero nel primo caso, una struttura di tipo Prenotazione nel secondo caso. Il client poi stampa il risultato dell operazione ricavato dal valore di ritorno della procedura. il server esegue la procedura remota che effettua l operazione richiesta, e restituisce al client la struttura dati con i nomi dei corsi nel primo caso, l esito dell operazione (numero di posti oppure 1) nel secondo caso. 1 2
2 Parte Java Struttura dati public class Corsi Soluzione String nome[][] = new String[10][5]; public Corsi() // qualche campo a caso... for(int i = 0; i < 10; i++) for(int j = 0; j < 5; j++) nome[i][j] = "step"; nome[0][0] = "yoga"; nome[1][0] = "yoga"; nome[2][0] = "yoga"; nome[0][1] = "gag"; nome[1][1] = "gag"; nome[2][1] = "gag"; nome[3][4] = ""; public String cerca(string corso) String giorno = ""; String linea = ""; for(int i = 0; i < 10; i++) for(int j = 0; j < 5; j++) if(nome[i][j].equals(corso)) if(j == 0) giorno = "Lunedi"; if(j == 1) giorno = "Martedi"; if(j == 2) giorno = "Mercoledi"; if(j == 3) giorno = "Giovedi"; if(j == 4) giorno = "Venerdi"; linea+="ore "+(i+10)+" del giorno "+ giorno+"\n"; return linea; Client orari_corso (datagram) import java.io.*; import java.net.*; public class orari_corso public static void main(string[] args) /* Controllo argomenti */ InetAddress addr = null; int port = -1; if(args.length == 2) addr = InetAddress.getByName(args[0]); port = Integer.parseInt(args[1]); else System.out.println("Usage: java orari_corso"+ " serverip serverport"); catch(unknownhostexception e) System.out.println("Problemi..."); System.out.println("LineClient: interrompo..."); System.exit(2); DatagramSocket socket = null; // la creazione e bind alla porta locale socket = new DatagramSocket(); socket.setsotimeout(30000); System.out.println("Orari_corso: avviato"); System.out.println("Creata la socket: " + socket); catch(socketexception e) System.out.println("orari_corso: interrompo..."); 3 4
3 BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); String richiesta = null; System.out.print("\n^D(Unix)/^Z(Win)+invio... "); // ciclo while di interazione con l utente while (stdin.readline()!= null) System.out.print("Nome corso? "); richiesta = stdin.readline(); catch(exception e) System.out.print("\n^D(Unix)/^Z(Win)+invio..."); DatagramPacket packetout = DatagramUtility.buildPacket(addr, port, richiesta); socket.send(packetout); // invio System.out.println("Richiesta inviata."); catch(ioexception e) System.out.print("\n^D(Unix)/^Z(Win)+invio..."); String risposta = null; risposta = DatagramUtility. getcontent(packetin); System.out.println("Risposta: \n" + risposta); catch(ioexception e) System.out.print("\n^D(Unix)/^Z(Win)..."); System.out.print("\n^D(Unix)/^Z(Win)..."); // while //try catch(exception e) System.out.println("corsi_giorno: termino..."); socket.close(); DatagramPacket packetin = null; byte[] buf = new byte[10000]; packetin = new DatagramPacket(buf, buf.length); socket.receive(packetin); // ricezione catch(ioexception e) System.out.print("\n^D(Unix)/^Z(Win)+invio..."); 5 6
4 Server datagram import java.io.*; import java.net.*; public class ServerDatagram public static final int PORT = 5000; public static void main(string[] args) Corsi corsi = new Corsi(); int port = -1; /* controllo argomenti */ if(args.length == 1) port = Integer.parseInt(args[0]); else if(args.length == 0) port = PORT; else System.out.println("Usage:..."); //try catch(exception e) System.out.println("Problemi, i seguenti: "); System.out.println("Usage:..."); System.out.println("server: avviato"); DatagramSocket socket = null; // creazione della socket datagram socket = new DatagramSocket(port); System.out.println("Creata la socket: " + socket); catch(socketexception e) 7 // ciclo di servizio while (true) // ricezione del datagramma DatagramPacket packet = null; InetAddress mittaddr = null; int mittport = 0; byte[] buf = new byte[20]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // ricezione mittaddr = packet.getaddress(); mittport = packet.getport(); System.out.println("Ricevuta richiesta."); catch(ioexception e)... // lettura della richiesta String linee = ""; String richiesta; richiesta = DatagramUtility.getContent(packet); String p = corsi.cerca(richiesta); System.out.println(p); packet = DatagramUtility. buildpacket(mittaddr, mittport, p); catch(ioexception e) linee = "Problemi nella creazione del"+ " pacchetto. Probabile numero troppo elevato di linee\n"; packet = DatagramUtility. buildpacket(mittaddr, mittport, linee); socket.send(packet); //invio catch(ioexception e)... // while //try catch(exception e) System.out.println("ServerDatagram: termino..."); socket.close(); 8
5 Client corsi_giorno import java.net.*; import java.io.*; public class corsi_giorno public static void main(string[] args) throws IOException InetAddress addr = null; Socket socket = null; DataInputStream insock = null; DataOutputStream outfile = null; DataOutputStream outsock = null; boolean ok; int port = -1; /* Controllo argomenti */ if(args.length == 2) addr = InetAddress.getByName(args[0]); port = Integer.parseInt(args[1]); else System.out.println("Usage: java corsi_giorno serverip serverport"); catch(unknownhostexception e)... System.exit(2); System.out.println("Corsi_giorno avviato"); // creazione stream di input da tastiera BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String nomefile = null; int numlinee = 0; System.out.print("\n^D(Unix)/^Z(Win)..."); String giorno; // interazione con l utente while (stdin.readline()!= null) System.out.print("Nome del giorno :"); 9 giorno = stdin.readline(); catch(exception e)... // creazione socket socket = new Socket(addr, port); socket.setsotimeout(10000); catch(exception e)... // creazione stream di input/output su socket outsock = new DataOutputStream( socket.getoutputstream()); insock = new DataInputStream( socket.getinputstream()); catch(ioexception e)... outsock.writeutf(giorno); // invio String ricezione = insock.readutf();//ricezione if(ricezione.equals("ok")) System.out.println("Ricevo: \n"); ricezione = insock.readutf();//ricezione dati System.out.println("Corsi: " + ricezione); System.out.println("\nRicezione terminata "); else if(ricezione.equals("no")) System.out.println("Giorno non esistente"); else System.out.println("Errore inaspettato, "); System.exit(3); socket.close(); //chiusura socket catch(exception e)... System.out.print("\n^D(Unix)/^Z(Win)..."); // while non EOF da console catch(exception e) System.out.println("Client: termino..."); stdin.close(); // corsi_giorno 10
6 Server stream // Server Stream import java.io.*; import java.net.*; public class ServerStream public static final int PORT = 6000; public static void main(string[] args) throws IOException PrintWriter out = null; int num = -1; Corsi corsi = new Corsi(); //creaz. Strutt. dati ServerSocket serversocket = null; Socket clientsocket = null; DataInputStream insock = null; DataInputStream infile = null; DataOutputStream outsock = null; int port = -1; /* controllo argomenti */ if(args.length == 1) port = Integer.parseInt(args[0]); else if(args.length == 0) port = PORT; else System.out.println("Usage:..."); //try catch(exception e)... // eventuali opzioni sulla socket? serversocket = new ServerSocket(port); catch(exception e) while (true) // ciclo di servizio // bloccante finchè non avviene una connessione clientsocket = serversocket.accept(); // per non bloccare indef. il server seq. clientsocket.setsotimeout(30000); catch(exception e)... // creazione stream di input da socket insock = new DataInputStream( clientsocket.getinputstream()); // creazione stream di output su socket outsock = new DataOutputStream( clientsocket.getoutputstream()); String giorno; giorno = insock.readutf(); //ricezione System.out.print("Nome del giorno "); System.out.println(giorno); catch(ioexception e)... // se la richiesta é corretta proseguo if(!giorno.equals("lun") &&!giorno.equals("mar") &&!giorno.equals("mer") &&!giorno.equals("gio") &&!giorno.equals("ven")) // se la richiesta non è corretta non proseguo System.out.println("giorno non valido"); outsock.writeutf("no"); //invio clientsocket.close(); //chiusura socket // il server continua l'esecuzione if(giorno.equals("lun")) num = 0; if(giorno.equals("mar")) num = 1; if(giorno.equals("mer")) num = 2; if(giorno.equals("gio")) num = 3; if(giorno.equals("ven")) num = 4; 11 12
7 // Preparazione risultato String linea = ""; for(int i = 0; i < 10; i++) linea += "Ore "+(i+10)+" "+ corsi.nome[i][num] + "\n"; outsock.writeutf("ok"); //invio outsock.writeutf(linea); // invio dati clientsocket.close(); //chiusura socket catch(exception e) System.out.println("Problemi nell'invio"); // while (true) //try catch(exception e) // qui non dovrei mai arrivare // ServerStream Parte C File XDR // palestra.x struct Corsi char lun [15]; char mar [15]; char mer [15]; char gio [15]; char ven [15]; ; struct Prenotazione char giorno[4]; int ora; ; program PALESTRA version FILEVERS int SERVER_START_UP(int i) = 1; Corsi CORSI_ORARIO(int orario) = 2; int PRENOTA_SPINNING(Prenotazione p) = 3; = 1; = 0x ; 13 14
8 Client // palestra_c.c #include <stdio.h> #include <rpc/rpc.h> #include "palestra.h" main (int argc, char *argv[]) char *host; CLIENT *cl; int *ris, *start_ok; Corsi *corsi; Prenotazione pren; char str[5]; int orario, ora, start; char c, ok [5] = ""; // controllo argomenti if (argc!= 2) printf ("usage: %s server_host\n", argv[0]); exit (1); host = argv[1]; // creazione gestore di trasporto cl = clnt_create (host, PALESTRA, FILEVERS, "udp"); if (cl == NULL) clnt_pcreateerror (host); exit (1); /* E' necessario inizializzare le strutture dati su cui andranno ad operare le due rpc, cioè la tabella con gli orari delle lezioni e i contatori che tengono traccia dei posti per le lezioni di spinning. Questo non poteva essere fatto ad ogni invocazione delle rpc perchè i valori di queste strutture devono essere mantenuti tra un'invocazione e l'altra, si è resa quindi necessaria una routine di startup del server da eseguire prima di entrare nel ciclo di interazione con l'utente */ start=1; start_ok=server_start_up_1(&start, cl); if (start_ok==null) printf("problemi nell'inizializzazione \n"); exit(-1); else // start_up ok printf("inserire:\nc) per vedere corsi\tp) per prenotare spinning\t^d per terminare: "); while (gets (ok)) if( strchr (ok, 'C')) // visionare corsi printf("orario (10-20): "); while (scanf("%i",&orario)!= 1) char ch; do ch = getchar(); while (ch!= '\n'); gets(str); if ((orario>9) && (orario<21)) printf("richiesto orario: %d\n",orario); // RISPETTARE LO SPAZIO DI NOMI!!! corsi = corsi_orario_1(&orario,cl); if(corsi==null) printf("errore!\n"); else printf ("I corsi sono:\n"); printf ("LUN: %s\nmar: %s\nmer: %s\ngio: %s\nven: %s\n", corsi->lun, corsi->mar, corsi->mer, corsi->gio, corsi->ven); // if ((orario>9) && (orario<21)) 15 16
9 else printf("orario sbagliato.\n"); // if C if( strchr( ok, 'P') ) // prenotazione printf("giorno (lun, mer, ven): "); scanf("%s",pren.giorno); if ((strcmp(pren.giorno, "lun")!=0) && (strcmp(pren.giorno, "mer")!=0) && (strcmp(pren.giorno, "ven")!=0)) printf("giorno sbagliato\n"); else // giorno ok printf("ora (16 oppure 20): "); while (scanf("%i",&ora)!= 1) //lettura intero char ch; do ch = getchar(); while (ch!= '\n'); if ((ora!=16) && (ora!=20)) printf("ora sbagliata\n"); else // ora ok pren.ora=ora; gets(str); // RISPETTARE LO SPAZIO DI NOMI!!! ris=prenota_spinning_1(&pren,cl); else if(*ris>=0) printf("prenotazione ok, ci sono ancora %d posti disponibili\n",*ris); else if(*ris=-1) printf("non ci sono piu' posti disponibili\n"); // ora ok // giorno ok // if P printf("inserire:\nc) per vedere corsi\tp) per prenotare spinning\t^d per terminare: "); // while // else start_up ok // free della memoria per il gestore di trasporto clnt_destroy (cl); exit (0); if(ris==null) printf("non riesco ad eseguire la rpc.\n"); 17 18
10 Server // palestra_s.c #include <stdio.h> #include <rpc/rpc.h> #include "palestra.h" Corsi lezioni [11]; int spinning[2][3]; // RISPETTARE LO SPAZIO DI NOMI!!! int * server_start_up_1_svc(int *p, struct svc_req *rqstp) static int result; int i, j; // inizializzazione strutture dati strcpy(lezioni[0].lun,"yoga"); strcpy(lezioni[0].mar,"add&stretch"); strcpy(lezioni[0].mer,"yoga"); strcpy(lezioni[0].gio,"add&stretch"); strcpy(lezioni[0].ven,"yoga");... strcpy(lezioni[10].lun,"spinning"); strcpy(lezioni[10].mar,"funky"); strcpy(lezioni[10].mer,"spinning"); strcpy(lezioni[10].gio,"funky"); strcpy(lezioni[10].ven,"spinning"); for (i=0; i<2; i++) for (j=0; j<3; j++) spinning[i][j]=20; result=0; return &result; //passaggio per riferimento // server_start_up // RISPETTARE LO SPAZIO DI NOMI!!! int * prenota_spinning_1_svc(prenotazione *pren, struct svc_req *rqstp) static int result; int g, o; result=-1; if (strcmp(pren->giorno, "lun")==0) g=0; else if (strcmp(pren->giorno, "mer")==0) g=1; else if (strcmp(pren->giorno, "ven")==0) g=2; else g=-1; if (pren->ora==16) o=0; else if (pren->ora==20) o=1; else o=-1; // attenzione alle condizioni logiche!! if ((g!=-1 && o!=-1) && (spinning[o][g]>0)) spinning[o][g]-=1; result=spinning[o][g]; return &result; //passaggio per riferimento else return &result; // prenota_spinning // RISPETTARE LO SPAZIO DI NOMI!!! Corsi * corsi_orario_1_svc(int *orario, struct svc_req *rqstp) static Corsi result; result = lezioni[*orario-10]; return &result; //passaggio per riferimento // corsi_orario 19 20
Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione
Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client
DettagliPrincipi, Modelli e Applicazioni per Sistemi Distribuiti M
Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura
DettagliServer Sequenziale. Server Concorrente. Socket Java con connessione. Materiale addizionale per esercitazioni facoltative
Materiale addizionale per esercitazioni facoltative Socket Java con connessione Server Sequenziale Std Input Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server
DettagliEsercitazione: Socket Java senza connessione
Esercitazione: Socket Java senza connessione Client e Server Datagram Sviluppare un applicazione C/S in cui: il client invia al server pacchetti contenenti il nome del file e il numero della linea del
DettagliPrincipi, Modelli e Applicazioni per Sistemi Distribuiti M
Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 1 (Svolta) Socket Java senza connessione Alessandro Pernafini Lab1 - svolta
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 1 (svolta) Socket Java senza connessione Luca Foschini Anno accademico 2017/2018 Esercitazione 1 1 Architettura
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (svolta) RPC: Inizializzazione Strutture Dati sul Server Luca Foschini Anno accademico 2010/2011
Dettagli(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la
Dettagli(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP D /LQH&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: i inviano al server pacchetti (vuoti) che vengono interpretati dal server come richiesta
DettagliPROVA FINALE Ingegneria del software
PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 5 Cosa faremo oggi 2 Comunicazione tramite TCP socket Comunicazione tramite UDP socket RIPASSO: Input Output 3 In
Dettagli! " # $ % &! ' ( ) (! 9 :! ; " / < 0 < "! 9 0 & %. 0 % & =! < 0 ; <. < > > <! 9?! ". & %!
! " # $ % &! ' ( ) (! In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in
DettagliIl modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.
In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client
DettagliDatagrammi. NOTA: MulticastSocket estende DatagramSocket
Datagrammi Le applicazioni che comunicano tramite socket possiedono un canale di comunicazione dedicato. Per comunicare, un client ed un server stabiliscono una connessione, trasmettono dati, quindi chiudono
DettagliEsercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server
Esercizi su Java RMI Progetto di Cliente / Servitore e supporto Un progetto RMI si deve basare sempre sulla interfaccia remota e sulle classi del cliente e del servitore più su alcune classi di supporto
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 7 (svolta) Java RMI e Riferimenti Remoti Un RMI Registry Remoto Luca Foschini Anno accademico 2018/2019
DettagliProtocollo UDP. User Data Protocol
User Data Protocol User Data Protocol Protocollo UDP non affidabile (può perdere pacchetti) ricezione pacchetti non ordinati senza connesione punto punto o multicast molto piu' efficiente di TCP utilizzato
DettagliApplicazioni web. Parte 10 Socket. Alberto Ferrari
Applicazioni web Parte 10 Socket Protocolli I computer collegati ad Internet comunicano tra loro usando il Transmission Control Protocol (TCP) o lo User Datagram Protocol (UDP) Quando si scrivono programmi
Dettagli9 Esercitazione (svolta):
9 Esercitazione (svolta): Remote Procedure Call: callback Callback con rpc Client Callback: meccanismo che permette ad un client di essere notificato dal server al verificarsi dell evento per cui si è
DettagliProgrammazione distribuita in Java. Socket & Client-Server
Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una
DettagliParte II: Reti di calcolatori Lezione 11 (35)
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Parte II: Reti di calcolatori Lezione 11 (35) Martedì 11-04-2017 1 Programmazione
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello
DettagliEsercizio UDP e Shell Remote
UDP e Shell Remote Esercitazione di Laboratorio 24/10/2007 UDP e Shell Remote su UDP Scrivere un applicazione composta da un processo Sender, il client, ed un processo Receiver, il server, in esecuzione
DettagliCorso di Reti di Calcolatori
Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che
DettagliCorso di Reti di Calcolatori. Datagrammi
Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliParte II: Reti di calcolatori Lezione 12 (36)
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Parte II: Reti di calcolatori Lezione 12 (36) Martedì 24-04-2018 1 Confronto
DettagliParte II: Reti di calcolatori Lezione 13 (37)
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Parte II: Reti di calcolatori Lezione 13 (37) Martedì 16-04-2019 1 Programmazione
DettagliEsercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:
Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di
DettagliProgrammare con le Socket TCP
Programmare con le Socket TCP Il Client deve contattare il server Il processo server deve già essere attivo Il server deve aver creato una socket che accetta la connessione del client ( socket di benvenuto
DettagliUniversità degli Studi di Bologna Scuola di Ingegneria
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 0 (svolta) Lettura e Scrittura File in Java e C Luca Foschini Michele Solimando, Giuseppe Martuscelli
DettagliParte II: Reti di calcolatori Lezione 12
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e
DettagliProgrammare con le Socket
Programmare con le Socket Corso Reti ed Applicazioni Lab Sockets pag. 1 Programmare con le Socket TCP Il Client deve contattare il server - Il processo server deve già essere attivo - Il server deve aver
DettagliI.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci
I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:
DettagliChat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
DettagliProgrammare con le Socket TCP in java. 2: Application Layer 1
Programmare con le Socket TCP in java 2: Application Layer 1 Il Client contatta il server Il Server: Il processo server è sempre attivo in attesa di connessioni (demone) Crea una socket per accettare la
DettagliCorso di Reti di Calcolatori
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2010/2011 Corso di Reti di Calcolatori Lucidi delle Esercitazioni Raffaele Giordanelli 1 Socket TCP 2 Echo Application
DettagliLezione n.7 LPR- Informatica Applicata
Lezione n.7 LPR- Informatica Applicata 26/3/2006 Laura Ricci Laura Ricci 1 RIASSUNTO DELLA LEZIONE Riepilogo caratteristiche Datagram Socket Stream Mode Socket API Sockets Lato Client Sockets Lato Server
DettagliLETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream
LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream LETTURA DI DATI DA INPUT Sfortunatamente, una tale classe non esiste
DettagliLPR A 2005/2006 Lezione 5. Riepilogo Caratteristiche Datagram Socket Stream Mode Socket API Sockets Lato Client Sockets Lato Server Esempi
LPR A 2005/2006 Lezione 5 Riepilogo Caratteristiche Datagram Socket Stream Mode Socket API Sockets Lato Client Sockets Lato Server Esempi DATAGRAM SOCKET API: RIASSUNTO DELLE PUNTATE PRECEDENTI un Datagram
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 0 (svolta) Lettura e Scrittura File in Java e C Luca Foschini Anno accademico 2016/2017 Esercitazione
DettagliSocket in Java. Modelli di comunicazione
Socket in Java Programmazione in Ambienti Distribuiti A.A. 2003-04 Modelli di comunicazione Connesso (stream-oriented) Basato sulla metafora del tubo Permette lo scambio di informazioni tra due partner
DettagliLETTURA DI DATI DA INPUT
LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream FileDescriptor InputStream SequenceInputStream ByteArrayInputStream
DettagliReti di Calcolatori:
Reti di Calcolatori: Internet, Intranet e Mobile Computing a.a. 2007/2008 http://www.di.uniba.it/~lisi/courses/reti/reti0708.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì
DettagliLaboratorio di Sistemi Applicazioni distribuite Java
Un po' di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine diverse all'interno di una rete di calcolatori e che utilizzano
DettagliArchitettura Client-Server
Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server
DettagliMagiCum S.r.l. Progetto Inno-School
MagiCum S.r.l. Progetto Inno-School Area Sviluppo Web Autore: Alessio Bernardo Revisione: 1 Data: 23/05/13 Titolo: Sviluppo piattaforma e-learning e sviluppo siti web File: Documentazione tecnica Sito:
DettagliProgrammazione II: Esami Svolti
Raccolta di Codici per imparare a programmare in Java in modo tale da affrontare e superare con successo l esame di Programmazione II Programmazione II: Esami Svolti A cura di: Emanuele Cennamo Nel seguente
Dettagli9. Java: Introduzione al Networking
9. Java: Introduzione al Networking Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Networking
DettagliSockets in Java. Lorenzo Gallucci
Sockets in Java Lorenzo Gallucci Sockets La libreria Java dispone di un API per la gestione dell I/O di rete Il package di riferimento è java.net Vari compiti: Gestione dell I/O su socket (sia TCP che
DettagliCorso di Telematica II
Corso di Laurea Triennale in Ingegneria Informatica ed Ingegneria delle Telecomunicazioni Corso di Telematica II Matricola Nome, Cognome Data Orale... Prova scritta del 21/07/2005 Si implementi, in linguaggio
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliParte II: Reti di calcolatori Lezione 10
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione
Dettagliimport java.io.*; Pag. 1 di 9
Di 5 regioni italiane si conoscono i metri quadrati relativi alla pianura, alla collina e alla montagna. Determinare l ampiezza complessiva in metri quadrati della pianura, della collina e della montagna
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 4 (proposta) Server Multiservizio: Socket C con select Luca Foschini Anno accademico 2010/2011 Esercitazione
DettagliSystem.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");
Creare un applicazione console che dato l indice della borsa di Milano nel giorno precedente, calcola la variazione percentuale rispetto al valore dell indice del giorno corrente. import java.io.*; public
DettagliMultithreading. Multithreading/2
Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2
DettagliEsercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa
Esercizi su UDP Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 22/10/2008 Un Tipico Client UDP Un client UDP invia datagrammi ad un server in attesa di essere
DettagliEsercizio Trasferimento File e Multicast
Esercizio Esercizio Trasferimento File e Esercitazione di Laboratorio 14/11/2007 Esercizio Trasferimento File e Esercizio Esercizio Trasferimento File Sviluppare un applicazione distribuita che offra il
DettagliLezione n.5 LPR-Informatica Applicata 13/3/2006
Lezione n.5 LPR-Informatica Applicata 13/3/2006 1 LA CLASSE BYTEARRAYOUTPUTSTREAM Definisce una struttura dati protected byte buf [ ]; protected int count buf memorizza i bytes che vengono scaricati sullo
Dettagliimport java.io.*; char sceltautente = '_'; boolean condizionesn = true; boolean condizionedowhile = true; boolean condizioneprogramma = true;
Un imposta sul reddito viene applicata in base alle seguenti fasce: fino a 35.000 euro 23% e oltre 35.000 euro 33%. Progettare un software, basato su un applicazione console, che, dato un certo reddito,
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 19 febbraio 2013 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliMultithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).
Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste
Dettagli10. Invocazione di Metodi Remoti
10. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Programmazione Distribuita.
Dettagliimport java.io.*; Pag. 1 di 15
8 studenti di 5 classi quinte hanno partecipato alle olimpiadi della matematica. Stampare l elenco degli studenti in ordine decrescente di punteggio ottenuto e la rispettiva classe di appartenenza. Realizzare
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione
DettagliCapitolo 2: Livello di applicazione
Programmazione delle socket in Java Nota per l utilizzo: Abbiamo preparato queste slide con l intenzione di renderle disponibili a tutti (professori, studenti, lettori). Sono in formato PowerPoint in modo
Dettagli// Dichiarare le variabili d'istanza e i metodi di lettura e scrittura delle stesse utilizzando il reference predefinito THIS. //... //... //... //...
import java.io.*; public class This_EquazioneSecondoGra // Dichiarare le variabili d'istanza e i metodi di lettura e scrittura delle stesse utilizzando il reference predefinito THIS. //... //... //...
DettagliOrganizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota
Organizzazione della lezione 10. Invocazione di Metodi Remoti Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Modelli di programmazione:
DettagliLaurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione
12. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Modelli di programmazione:
DettagliASD: Sistemi Distribuiti (Prof. Scarano) 07/05/2002
Organizzazione della lezione 9. Java: Introduzione al Networking Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Networking
DettagliRealizzare un applicazione console che stampi la somma dei primi n numeri dispari oppure pari (a scelta dell operatore). import java.io.
Realizzare un applicazione console che stampi la somma dei primi n numeri dispari oppure pari (a scelta dell operatore). import java.io.*; public class M1_13 { public static void main(string args[]) throws
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 8 (proposta) Remote Procedure Call (RPC) Luca Foschini Anno accademico 2013/2014 Esercitazione 8 1 Specifica
DettagliSERVIZIO DISTRIBUITO DI REGISTRAZIONE
SERVIZIO DISTRIBUITO DI REGISTRAZIONE Zambellini Stefano e-mail zambe@libero.it matr. 2146 57292 SOMMARIO. Specifiche Schema e descrizione Ipotesi di guasto Cliente Server1 Server2 Nota integrativa Particolari
DettagliInput. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei
Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite
DettagliOrganizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation
Organizzazione della lezione Lezione 12 Introduzione a Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi
DettagliNetwork Programming. Java Programming Language. Network Programming TIGA 1
Network Programming Java Programming Language Network Programming TIGA 1 Modello a scambio di messaggi I processi interagiscono attraverso una rete di comunicazione I processi non condividono alcuna risorsa
DettagliStrutture Software 1 INTRODUZIONE INTRODUZIONE SOMMARIO
INTRODUZIONE Strutture Software 1 Docente: Fabio Solari Tel.: 010-3532289 E-mail: fabio@dibe.unige.it URL: http://www.pspc.dibe.unige.it Presentare i principali metodi utilizzati per organizzare e rappresentare
Dettagli8 Esercitazione (svolta):
8 Esercitazione (svolta): Remote Procedure Call Esercizio 1: Sviluppare un applicazione C/S che consente di effettuare la somma tra due interi in remoto: File somma.x struct Operandi int op1; int op2;
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input
DettagliApplicazioni web. Parte 5 Socket
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 5 (proposta) Focalizzazione conoscenze acquisite Luca Foschini Anno accademico 2013/2014 Esercitazione
DettagliMetodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
Dettagliimport java.io.*; class Quadrato implements FigureGeometrichePiane { private double lato;
Un giardino condominiale è formato da un quadrato di lato 30 metri inscritto in un cerchio. Si vogliono inserire nel quadrato delle piastrelle, anch esse quadrate, di lato 10 centimetri e dal costo di
Dettagliimport java.io.*; public class EU4_23 { private double prezzoacquisto; private double percentualeguadagno;
Un dettagliante acquista un prodotto a 200 euro. Considerando che, per avere un sufficiente guadagno e recuperare le proprie spese, deve aumentare il costo del 70%, determinare il prezzo a cui dovrebbe
DettagliIn un file di testo galera.txt sono memorizzati i dati relativi ad alcune condanne penali, ognuna con i dati:
Linguaggi Corso di Laurea Ingegneria Informatica (M-Z) A.A. 2006-2007 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Esercitazione su I/O in Java 1 In un file
DettagliA. Ferrari Stream e File
Stream e File Java la classe File o per operare con l intero file java mette a disposizione la classe File o per utilizzare la classe File è necessario importare la libreria java.io.file o la classe File
Dettagli// Variabile utilizzata esclusivamente nei cicli DO... WHILE per la verifica dei dati. Pag. 1 di 12
import java.io.*; public class PosizionePunto { private double x; private double y; public void x(double valore_x) { this.x = valore_x; public void y(double valore_y) { this.y = valore_y; public double
DettagliLa funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre
La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre Unica particolarità: viene chiamata dal Sistema Operativo, appena il programma viene avviato Non
DettagliLezione 11: Liste a Puntatori e Input/Output
Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)
DettagliEccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.
Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma
Dettagli// Variabile utilizzata per eseguire una nuova elaborazione del programma senza riavviarlo.
Un azienda vende 3 prodotti a 56 euro ciascuno e i successivi 8 prodotti a 66 euro. Determinare il prezzo medio di un singolo prodotto. Basare la soluzione del problema su un applet. import java.io.*;
DettagliFile. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..
File I file sono una illusione creata dal Sistema Operativo(SO) Il SO usa opportune strutture dati per implementare tale astrazione (ad esempio: File Control Block, FCB) Sono usati per memorizzare in modo
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliESEMPI DI APPLICAZIONI ONC-RPC
ESEMPI DI APPLICAZIONI ONC-RPC Applicazione 1: Procedura remota per la somma di due numeri Applicazione 2: Procedura remota per la realizzazione di una chat Annarita Fierro matricola: 628404 Applicazione
Dettagli