Strumenti Utente

Strumenti Sito


lcs:lcs06:progetto

Questa è una vecchia versione del documento!


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 (vedi esercitazioni).

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:

  • scaricare il binario2) da mpack, salvarlo con questo nome ad esempio in ~/bin e aggiungere la directory al PATH (vedi FAQ).
  • 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:

  1. Scompattare la libreria MainWindow
     tar xvfz MainWindow.tgz 
  2. Entrare nella directory MainWindow/
     cd MainWindow 
  3. Eseguire
     make 
  4. Copiare la libreria in ../lib/
     cp libMainWindow.a ../lib/ 
  5. Scompattare la libreria stubMainWindow:
     tar xvfz stubMainWindow.tgz 
  6. Entrare nella directory stubMainWindow/
     cd stubMainWindow 
  7. Eseguire
     make 
  8. 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.

1)
per informazioni aggiuntive su una tabella hash puoi vedere i siti di algoritmica o Wikipedia
2)
ATTENZIONE! e' un file binario quindi non ha senso visualizzarlo, salvatelo su file con il tasto destro del mouse!
3)
E' necessario che la macchina sia sotto Linux, per questo conviene connettersi a trudy; eventualmente, se ssh non si collega o restituisce connection refused, provate a connettervi a un'altra macchina.
lcs/lcs06/progetto.1170514487.txt.gz · Ultima modifica: 27/06/2007 alle 12:16 (17 anni fa) (modifica esterna)