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