Indice
Progetto LCS 2005/06
Informazioni generali
Il progetto prevede la realizzazione di una chat distribuita. Maggiori informazioni sulle modalita' di consegna, sulla prova orale e sul calcolo del voto dell'esame sono contenute nei lucidi introduttivi della prima lezione del corso.
Specifica del progetto
Il progetto prevede la realizzazione di un sistema client-server che implementa una chat
distribuita. Sono adesso disponibili le specifiche complessive del progetto.
Per la realizzazione dei frammenti 2 e 3 prima leggere accuratamente le specifiche complessive e poi seguire scrupolosamente le indicazioni fornite nei file README di ciascun frammento.
Libreria MainWindow
Per il terzo frammento (stesura del client e delle librerie di comunicazione) e' necessario utilizzare la libreria MainWindow (MW). La libreria realizza sette funzioni che permettono di interagire con le finestre di ascolto e di comando del client senza dover gestire i dettagli a basso livello del terminale. La libreria e' fornita, gia' compilata, all'interno dei kit dei frammenti 2 e 3, per l'utilizzazione leggere attentamente il Manuale Utente.
Per la stesura del progetto non e' necessario guardare i sorgenti della libreria o ricompilarli, chi fosse comunque interessato puo' scaricare la distribuzione completa (licenza BSD).
Materiale primo frammento (scadenza 20/03)
Primo kit disponibile: lcschat_kitf1.tar
Scaricatelo, salvatelo in un file con lo stesso nome in una directory nuova e s-taratelo con il comando
bash:~$ tar xvf lcschat_kitf1.tar
questo crea una directory lcschat, all'interno della quale si trova il file README-1 che contiene tutte le informazioni su come procedere per la realizzazione del codice del frammento.
Questo primo frammento, realizzabile in C sequenziale, prevede l'implementazione di una tabella hash1) che verra' utilizzata all'interno del server per memorizzare i “canali di comunicazione” con i diversi client connessi alla chat. In particolare la chiave (strings) rappresentera' il nome dell'utente connesso, e l'intero rappresentera' un identificatore univoco del canale corrispondente.
Attenzione: l'utility mpack e' installata solo nelle macchine dei laboratori H, I ed M. Se volete effettuare la consegna del frammento da un'altra macchina o da casa potete:
- piu' semplicemente collegarvi con ssh a trudy o una macchina dei laboratori H, I o M, i cui nomi sono fujihXX, fujiiXX, fujiXX, ad esempio
ssh logindelcli@trudy ssh logindelcli@fujim1
ed eseguire lo script di consegna3).
Materiale secondo frammento (scadenza 12/05/06)
Secondo kit disponibile: lcschat_kitf2.tar
Scaricatelo, salvatelo in un file con lo stesso nome in una directory nuova e s-taratelo con il comando
bash:~$ tar xvf lcschat_kitf2.tar
questo crea una directory lcschat, all'interno della quale si trova il file README-2 che contiene tutte le informazioni su come procedere per la realizzazione del codice del secondo frammento.
Il secondo frammento, realizzabile utilizzando le chiamate di sistema relative ai processi ed ai pthread, prevede l'implementazione del server della chat. Il server e' costituito da un thread dispatcher che riceve le richieste di connessione da parte dei client relativi ai vari utenti e da un thread worker per ogni utente connesso. I thread worker condividono la tabella hash su cui sono registrati i socket di comunicazione dei client connessi.
L'eseguibile del client e la libreria di comunicazione che usa i socket sono forniti nel kit e saranno sviluppati nel terzo frammento.
Il kit contiene eseguibili di test per il server ed il client che possono essere utilizzati per test preliminari e per avere un'idea del funzionamento complessivo.
NOTA: Insieme al materiale per il secondo frammento, sono state rilasciate anche le specifiche generali dell'intero progetto.
Sono disponibili anche i binari compilati per processore AMD64. Vi ricordiamo comunque che il codice del progetto *DEVE* compilare e funzionare correttamente sulle macchine del centro di calcolo.
Materiale terzo frammento (scadenza 30/06)
Terzo kit disponibile: lcschat_kitf3.tar
Scaricatelo, salvatelo in un file con lo stesso nome in una directory nuova e s-taratelo con il comando
bash:~$ tar xvf lcschat_kitf3.tar
questo crea una directory lcschat, all'interno della quale si trova il file README-3 che contiene tutte le informazioni su come procedere.
Il terzo frammento, realizzabile utilizzando socket e segnali, prevede l'implementazione completa del server e del client della chat secondo le specifiche generali dell'intero *progetto.
ATTENZIONE: Per compilare le librerie di MainWindow seguire i seguenti passi:
- Scompattare la libreria MainWindow
tar xvfz MainWindow.tgz
- Entrare nella directory MainWindow/
cd MainWindow
- Eseguire
make
- Copiare la libreria in ../lib/
cp libMainWindow.a ../lib/
- Scompattare la libreria stubMainWindow:
tar xvfz stubMainWindow.tgz
- Entrare nella directory stubMainWindow/
cd stubMainWindow
- Eseguire
make
- Copiare la libreria in ../lib/ RINOMINANDOLA con il nome libtestMainWindow.a:
cp libMainWindow.a ../lib/libtestMainWindow.a
Altre informazioni
Ricordate che tutti gli elaborati consegnati verranno confrontati fra di loro automaticamente. I frammenti simili verranno annullati. Inoltre, leggete bene le FAQ.