-
Gentile professor Corradi,
-
come dal lei richiesto, le invio la descrizione del progetto che intendo
realizzare nell'ambito del corso di Reti di calcolatori. Il nome del progetto
è "Agorà".
-
Intendo realizzare un'applicazione per permettere a più utenti che
accedono alla stessa pagina html, attraverso un browser che supporti java,
di comunicare tra loro, avendo in mente di seguire l'esempio dei MOO. Ho
intenzione di sviluppare un'interfaccia che segua la metafora di una piazza,
nella quale gli utenti siano rappresentati da avatar (alter-ego virtuali
di persone) , e possano compiere alcune azioni elementari come muoversi,
cambiare espressione per comunicare uno stato d'animo, ed inviare messaggi.
I messaggi inviati da un utente arrivano solo agli utenti vicini.
-
-

intendo sviluppare l'applicazione seguendo il paradigma client-server,
e per meglio affrontare i temi del corso, ho intenzione di progettare il
server in maniera distribuita permettendo all'utente U1 collegato al server
S1 di "vedere" l'utente U2 collegato al server S2. Al fine di ottenere
questo risultato si prevede di dover affrontare due problemi principali:
1) come gestire l'interazione tra client e server
2) come gestire l'interazione tra server e server
Si è scelto di progettare il server seguendo un approccio multiprogrammato
(sfruttando la possibilità offerta da java di gestire i processi
leggeri), che preveda due tipi di thread, uno per ogni cliente (thread
di gestione utenti) e uno per ogni server (thread di coordinamento tra
server). In questo contesto si progettrà un protocollo atto a definire
le interazioni tra client e server, e uno per quelle tra server e server,
al fine di gestire la modifica dello stato del server, la sua trasmissione
ai client e agli altri server.
E' evidente che, affinchè un generico client possa disporre
dell'informazione necessaria a disegnare gli utenti e visualizzare i messaggi,
è necessario che ad ogni variazione dello stato di un server, questo
comunichi al client lo stato aggiornato e, in questo contesto ho intenzione
di sfruttare la possibilità offerta da Java di inviare oggetti su
stream; avendo definito una classe "stato" sarà sufficiente inviare
l'istanza di essa che rappresenta lo stato aggiornato ad ogni client.
p.s.
Ho già sviluppato una versione "beta" pienamente funzionante
fatta eccezione per l'interazione tra i vari server.
Andrea Di Cesare (56559)