Reti di Calcolatori L-A Compito A Parte Java. Compito A. Parte C. Cognome: Matricola:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Reti di Calcolatori L-A Compito A Parte Java. Compito A. Parte C. Cognome: Matricola:"

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

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

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, 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

Dettagli

Server Sequenziale. Server Concorrente. Socket Java con connessione. Materiale addizionale per esercitazioni facoltative

Server 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

Dettagli

Esercitazione: Socket Java senza connessione

Esercitazione: 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

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso 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

Dettagli

Corso di Reti di Calcolatori T

Corso 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso 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 (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 (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

Dettagli

PROVA FINALE Ingegneria del software

PROVA 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?! ". & %!

!  # $ % &! ' ( ) (! 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

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso 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

Dettagli

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Datagrammi. 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

Dettagli

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server

Esercizi 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

Dettagli

Corso di Reti di Calcolatori T

Corso 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

Dettagli

Protocollo UDP. User Data Protocol

Protocollo 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

Dettagli

Applicazioni web. Parte 10 Socket. Alberto Ferrari

Applicazioni 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

Dettagli

9 Esercitazione (svolta):

9 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 è

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione 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

Dettagli

Parte II: Reti di calcolatori Lezione 11 (35)

Parte 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso 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

Dettagli

Esercizio UDP e Shell Remote

Esercizio 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

Dettagli

Corso di Reti di Calcolatori

Corso 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

Dettagli

Corso di Reti di Calcolatori. Datagrammi

Corso 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

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio 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[]

Dettagli

Parte II: Reti di calcolatori Lezione 12 (36)

Parte 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

Dettagli

Parte II: Reti di calcolatori Lezione 13 (37)

Parte 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

Dettagli

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Esercitazione 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

Dettagli

Programmare con le Socket TCP

Programmare 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

Dettagli

Università degli Studi di Bologna Scuola di Ingegneria

Università 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

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte 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

Dettagli

Programmare con le Socket

Programmare 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

Dettagli

I.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. 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:

Dettagli

Chat. 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. 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

Dettagli

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

Programmare 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

Dettagli

Corso di Reti di Calcolatori

Corso 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

Dettagli

Lezione n.7 LPR- Informatica Applicata

Lezione 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

Dettagli

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. 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

Dettagli

LPR 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 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

Dettagli

Corso di Reti di Calcolatori T

Corso 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

Dettagli

Socket in Java. Modelli di comunicazione

Socket 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

Dettagli

LETTURA DI DATI DA INPUT

LETTURA 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

Dettagli

Reti di Calcolatori:

Reti 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ì

Dettagli

Laboratorio di Sistemi Applicazioni distribuite Java

Laboratorio 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

Dettagli

Architettura Client-Server

Architettura 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

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum 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:

Dettagli

Programmazione II: Esami Svolti

Programmazione 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

Dettagli

9. Java: Introduzione al Networking

9. 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

Dettagli

Sockets in Java. Lorenzo Gallucci

Sockets 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

Dettagli

Corso di Telematica II

Corso 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

Dettagli

Le basi del linguaggio Java

Le 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

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte 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

Dettagli

import java.io.*; Pag. 1 di 9

import 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso 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

Dettagli

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

System.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

Dettagli

Multithreading. Multithreading/2

Multithreading. 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

Dettagli

Esercizi 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 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

Dettagli

Esercizio Trasferimento File e Multicast

Esercizio 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

Dettagli

Lezione n.5 LPR-Informatica Applicata 13/3/2006

Lezione 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

Dettagli

import java.io.*; char sceltautente = '_'; boolean condizionesn = true; boolean condizionedowhile = true; boolean condizioneprogramma = true;

import 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,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).

Multithreading/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

Dettagli

10. Invocazione di Metodi Remoti

10. 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.

Dettagli

import java.io.*; Pag. 1 di 15

import 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

Dettagli

Corso sul linguaggio Java

Corso 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

Dettagli

Capitolo 2: Livello di applicazione

Capitolo 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. //... //... //... //...

// 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. //... //... //...

Dettagli

Organizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota

Organizzazione 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:

Dettagli

Laurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione

Laurea 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:

Dettagli

ASD: Sistemi Distribuiti (Prof. Scarano) 07/05/2002

ASD: 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

Dettagli

Realizzare 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. 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

Dettagli

Corso di Reti di Calcolatori T

Corso 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

Dettagli

SERVIZIO DISTRIBUITO DI REGISTRAZIONE

SERVIZIO 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

Dettagli

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Input. 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

Dettagli

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation

Organizzazione 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

Dettagli

Network Programming. Java Programming Language. Network Programming TIGA 1

Network 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

Dettagli

Strutture Software 1 INTRODUZIONE INTRODUZIONE SOMMARIO

Strutture 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

Dettagli

8 Esercitazione (svolta):

8 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;

Dettagli

Corso di Informatica A.A

Corso 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

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni 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

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Corso di Reti di Calcolatori T

Corso 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

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi 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

Dettagli

import java.io.*; class Quadrato implements FigureGeometrichePiane { private double lato;

import 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

Dettagli

import java.io.*; public class EU4_23 { private double prezzoacquisto; private double percentualeguadagno;

import 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

Dettagli

In un file di testo galera.txt sono memorizzati i dati relativi ad alcune condanne penali, ognuna con i dati:

In 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

Dettagli

A. Ferrari Stream e File

A. 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

// 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

Dettagli

La 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 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

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 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)

Dettagli

Eccezioni. 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. 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.

// 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.*;

Dettagli

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

File. 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

Dettagli

19 - 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 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

Dettagli

ESEMPI DI APPLICAZIONI ONC-RPC

ESEMPI 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