Riporto sotto il testo dell'esercitazione cosí come è stato fornito dalla docente:
Scrivere una applicazione client-server che consenta al client su una certa macchina di ottenere aggiornamenti relativi ai files di una data directory su una macchina remota.
Piú precisamente, il client scandisce la directory common_dir sulla sua stessa macchina e determina il tempo dell'ultima modifica e/o aggiunta tra tutti i files presenti nella directory. Richiede quindi al server l'invio di tutti i files presenti sull'host del server nella directory common_dir che sono stati creati e/o modificati dopo quel tempo. Il client aggiorna quindi la propria directory in base alle informazioni ricevute.
Se la directory common_dir del client è inizialmente vuota, il server dovrà inviare tutti i files della propria directory al client. Varianti di questa applicazione sono possibili (da discutere con il docente).
La comunicazione deve essere ottenuta mediante l'interfaccia socket che invoca TCP/IP (connection oriented reliable transport protocol). Si testi l'applicazione usando 4 macchine del laboratorio, una sulla quale giri il server e tre con i processi clients. Si usi per la porta logica un valore superiore a 5000.
Al testo originale ho voluto apportare alcune modifiche per implementare meglio l'idea base dell'esercitazione. Cosí com'è, infatti, la descrizione dell'esercitazione non prevede la cancellazione sul lato client dei file rimossi dalla direcoty comune del server. Nel testo, inoltre, si fa semplicemente riferimento a "file", mentre nei miei sorgenti è stato aggiunto anche il supporto per le directory, anche se questo comporta, come vedremo, un leggera complicazione del codice.
Il testo dell'esercitazione è allora diventato sostanzialmente il seguente:
Precedente Successivo
Relizzare un'applicazione client-server che permetta al client su una certa macchina di effettuare il mirroring della directory del server common_dir, che potrà contenere solo file di tipo regolare ovvero directory. Ogni altro tipo di file verrà silenziosamente ignorato.La comunicazione deve essere ottenuta mediante l'interfaccia socket che invoca TCP/IP (connection oriented reliable transport protocol). Si testi l'applicazione usando 4 macchine del laboratorio, una sulla quale giri il server e tre con i processi clients. Si usi per la porta logica un valore superiore a 5000.