file audio
Transcript
file audio
Cognome: Nome: Matricola: Reti di Calcolatori T Reti di Calcolatori L-A Appello del 31/01/2012 ……………………………… ……………………………… ……………………………… Compito 1 Tempo a disposizione: 2h È obbligatorio inserire Cognome Nome Matricola e Numero Compito all’inizio di ogni file sorgente, pena la non valutazione del compito, che viene stampato in modo automatico solo in caso siano presenti gli elementi detti sopra. Si devono consegnare tutti i file sorgente e tutti gli eseguibili prodotti singolarmente (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 è consigliato sviluppare entrambe le soluzioni richieste al meglio. In entrambi gli esercizi, sia in Java che in 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. Leggete con attenzione le specifiche del problema prima di impegnarvi “a testa bassa” nello sviluppo delle singole parti. Naturalmente, ci aspettiamo che i componenti da consegnare siano stati provati e siano funzionanti. **************************************************************************************************************** Si richiede il progetto della gestione dei servizi PrevedoBrutto, per la pubblicazione di previsioni meteo relative alle condizioni meteo di una settimana. I servizi di PrevedoBrutto mantengono, per giorno della settimana, le seguenti informazioni: il nome del giorno (da lunedì a domenica), la previsione (una stringa che può assumere uno dei seguenti stati: sereno, variabile, nuvoloso, pioggia o neve), le temperature massima e minima, e un file audio che contiene una breve descrizione della situazione meteo della giornata. I file con gli audio sono mantenuti nel direttorio corrente, dove vengono lanciati server e client. In particolare, si richiede di realizzare le seguenti funzionalità: 1. visualizzazione dei dati relativi ai giorni con una certa previsione: questa operazione richiede lo stato della previsione e visualizza tutti i giorni della settimana che corrispondono a tale previsione, riportandone la temperatura massima e minima; 2. aggiornamento delle temperature massime e minime relative a un giorno: questa operazione richiede un giorno della settimana e la temperatura massima e minima per tale giorno, quindi aggiorna la struttura dati; 3. upload del file audio con la previsione: questa operazione richiede il giorno della settimana e il nome del file audio, quindi trasferisce il file salvandolo nel direttorio del server; 4. download audio dei giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia: questa operazione richiede la soglia e scarica (dal server al client) i file degli audio relativi ai giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia, salvandoli nel direttorio corrente del client. Si progetti inoltre la struttura dati che mantiene le previsioni per i sette giorni della settimana (da lunedì a domenica), da implementare opportunamente nei diversi ambienti richiesti, Java e C. Giorno Previsione Temp. MAX Temp. MIN File audio Lunedì nuvoloso 6 -3 30gen12.mp3 Martedì nuvoloso 5 -4 31gen12.mp3 … … … … … Sabato sereno -2 -17 4feb12.mp3 Domenica neve -3 -20 5feb12.mp3 Parte C Utilizzando RPC sviluppare un’applicazione C/S che consenta di effettuare le operazioni remote per: • visualizzare i dati relativi ai giorni con una certa previsione; • aggiornare le temperature massime e minime. Il progetto RPC si basa su un’interfaccia (contenuta nel file RPC_xFile.x) in cui vengono definite le procedure invocabili in remoto dal client: • La procedura visualizza_dati accetta come parametro d'ingresso una stringa che rappresenta lo stato della previsione e restituisce la lista dei giorni che corrispondono a tale previsione, riportando, per ogni giorno, nome del giorno e temperatura massima e minima. • La procedura aggiona_temperature accetta come parametro d’ingresso una struttura dati contenente una stringa che rappresenta un giorno della settimana e la temperatura massima e minima per tale giorno e aggiorna la struttura dati restituendo l’esito dell’operazione. Si progettino inoltre: • RPC_Server (contenuta nel file RPC_Server.c), che implementa le procedure del server invocabili in remoto; • RPC_Client (contenuta nel file RPC_Client.c), il processo che realizza l’interazione con l’utente proponendo ciclicamente i servizi che utilizzano le due procedure remote, e stampa a video i risultati, fino alla fine del file di input da tastiera. Parte Java Sviluppare un’applicazione C/S basata su socket stream che realizzi le operazioni remote per: • upload del file audio con la previsione; • download audio dei giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia. Si noti il vincolo di usare un’unica connessione per tutte le interazioni fra client e server. Si considerino e si segnalino le possibilità di interferenze fra le operazioni, evitandole dove necessario. Più in dettaglio: • Il client è organizzato come un processo filtro, ossia ciclico che esegue fino alla fine del file di input: per ogni iterazione del ciclo, chiede all’utente quale tipo di operazione vuole effettuare e realizza le interazioni col server utilizzando una sola connessione per la intera sessione con il server; alla ricezione del fine file, libera opportunamente le risorse e termina. Per ogni richiesta ricevuta dall’utente, il client prima invia il tipo di servizio al server, poi gestisce gli invii e le ricezioni necessarie alla realizzazione dello specifico servizio. Nel caso di upload del file audio con la previsione, il client richiede all’utente e invia al server il giorno della settimana e il nome del file audio, quindi invia il file corrispondente al server. Nel caso di download audio dei giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia, il client richiede all’utente e invia al server la soglia, quindi riceve i file audio, salvandoli sul file system locale. • Il server è organizzato come un unico processo che gestisce in modo parallelo l’interazione col client generando un figlio all’arrivo di ogni richiesta da un nuovo client. Il figlio che serve quella sessione, con una prima lettura discrimina il tipo di funzionalità richiesto, poi gestisce opportunamente invii e ricezioni per l’operazione e si pone in attesa di nuove richieste dallo stesso client; alla lettura della fine sessione, il figlio termina. Per ogni richiesta di upload del file audio con la previsione, il figlio riceve il giorno della settimana e il nome del file audio, quindi riceve il file audio salvandolo sul file system locale, oppure invia una notifica di errore, ad esempio, se il giorno non esiste. Per ogni richiesta di download audio dei giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia, il server riceve la soglia, scorre la lista individuando i giorni nei quali la differenza fra temperatura massima e minima è superiore a una certa soglia e invia i file audio corrispondenti al client. 1 2