Reti di Calcolatori L-A Appello del 22/06/2006

Cognome:
Nome:
Matricola:
Reti di Calcolatori L-A
Appello del 22/06/2006
………………………………
………………………………
………………………………
Compito 1
Tempo a disposizione: 2h
E’ obbligatorio mettere 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 è consigliabile sviluppare, almeno in parte, entrambe le soluzioni richieste.
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, i componenti da consegnare devono essere stati provati.
Parte Java
Utilizzando java RMI sviluppare un’applicazione C/S che consenta di effettuare le operazioni
remote per:
• modificare una descrizione;
• eliminare un album.
Il progetto RMI si basa su:
• un’interfaccia (RemOp, contenuta nel file RemOp.java) in cui vengono definiti i metodi
invocabili in remoto dal client:
Il metodo modifica_descrizione accetta come parametro d’ingresso il nome del file e la
nuova descrizione, quindi restituisce valore logico vero in caso di successo, falso in caso
d’errore, ad esempio, se la foto non è presente nel sistema.
Il metodo elimina_album accetta come parametro d’ingresso il titolo dell’album, elimina tutti
i file e libera le righe corrispondenti alle foto dell’album nella struttura dati; quindi restituisce
valore logico vero in caso di successo, falso in caso d’errore, ad esempio, se l’album non è
presente nel sistema.
Si progettino inoltre le classi:
• Server (contenuta nel file Server.java), che implementa i metodi del server invocabili in remoto;
• Client (contenuta nel file Client.java), che realizza l’interazione con l’utente proponendo
ciclicamente i servizi che utilizzano i due metodi remoti, e stampa a video i risultati, fino alla
fine del file di input da tastiera.
Parte C
****************************************************************************************************************
Si richiede il progetto della gestione dei servizi FotoHosting, per utenti che vogliono condividere le
proprie foto. FotoHosting mette a disposizione un insieme di funzionalità per la gestione e la
condivisione di foto; tutti i file (le singole foto) vengono mantenuti in uno stesso direttorio e ad ogni
file è associato un album ed una descrizione della foto.
In particolare, si richiede di realizzare le seguenti funzionalità:
1. visualizzazione delle descrizioni delle foto di un album: questa operazione richiede il nome
dell’album e visualizza i nomi dei file e le descrizioni delle prime cinque foto contenute
nell’album richiesto;
2. modifica di una descrizione: questa operazione richiede il nome del file e la nuova
descrizione, quindi effettua la modifica della descrizione sulla struttura dati;
3. eliminazione di un album: questa operazione richiede il titolo dell’album, ed elimina tutti i file
relativi all’album dal sistema, e le foto dalla struttura dati;
4. download di una foto con un certo identificativo: questa operazione richiede il nome del file
e lo trasferisce dal cliente al servitore.
Si progetti inoltre la struttura dati che mantiene le N foto (L, per libero a default), da implementare
opportunamente nei diversi ambienti richiesti, Java e C. Per ogni foto vengono mantenuti album,
descrizione, e nome del file.
Album
Montagna
Montagna
L
L
Mare
Descrizione
Passeggiata Alpe Siusi
Shopping Ortisei
L
L
Grattacielo Cesenatico
1
File
foto1.jpg
foto2.jpg
L
L
foto6.jpg
Sviluppare un’applicazione C/S che consenta di effettuare le operazioni remote per:
• effettuare il download di una foto;
• visualizzare le descrizioni delle prime cinque foto dell’album;
con un servitore multiservizio (uso di select).
Più in dettaglio:
• Il client_stream realizza la funzionalità di download di una foto utilizzando socket stream. Il
client chiede ciclicamente all’utente il nome del file da scaricare, fino alla fine del file di input da
tastiera, dopodichè libera opportunamente le risorse e termina.
Ad ogni richiesta, il client invia al server il nome del file, quindi riceve il file, che salva sul file
system locale, oppure l’esito negativo della richiesta, che stampa a video.
•
Il client_datagram realizza la funzionalità di visualizzazione delle descrizioni delle prime
cinque foto di un album utilizzando socket datagram. Il client chiede ciclicamente all’utente il
nome dell’album, fino alla fine del file di input da tastiera, e, al termine, libera opportunamente
le risorse e termina.
Ad ogni richiesta dell’utente il client invia il nome dell’album, quindi riceve le descrizioni delle
prime cinque foto, oppure l’esito negativo della richiesta, e lo stampa a video.
•
Il server principale unico discrimina le richieste utilizzando la primitiva select. Il server gestisce
in modo parallelo la funzionalità di download, mentre la funzionalità di visualizzazione delle
descrizioni può essere realizzata in modo seriale o parallelo.
Per ogni richiesta di download di una foto, il figlio riceve il nome del file, quindi invia il file,
oppure, in caso di errore o file non esistente, invia una indicazione di esito negativo, ad
esempio -1.
Per ogni richiesta di visualizzazione delle descrizioni delle foto di un album il figlio riceve il
nome dell’album, quindi invia il nome del file e le descrizioni delle prime foto dell’album (fino ad
un massimo di cinque), oppure, in caso di errore o album non esistente, invia una indicazione
di esito negativo, ad esempio -1.
2