Sviluppo di un player di Campo
Minato multigiocatore con supporto
di Chat MultiCast
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Funzionalità:
L’applicazione offre due tipi di servizi,
concettualmente separabili tra loro:
• una chat, all’interno della quale
scambiare messaggi, tra tutti i
partecipanti alla sessione;
• un servizio di gestione di partite a Campo
Minato multigiocatore.
2
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Chat: struttura C/S
Protocollo TCP/IP realizzato attraverso Socket Java con connessione.
Server centralizzato, gestore unico della comunicazione.
All’inizio della sessione ogni client si
collega al server e si registra.
Quando vuole comunicare, il client
invia un messaggio al server.
Il Server provvede alla distribuzione
dei messaggi in modalità Broadcast a
tutti i client registrati.
Server con funzionalità di distributore di messaggi.
I Client non si conoscono a vicenda.
3
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerServer
•Il server, al suo avvio, apre un canale di comunicazione, e rimane in
attesa che i client si iscrivano al servizio.
•Attraverso la classe ChatHandler il server crea un nuovo listener per
ogni client che si iscriva al servizio.
•Ogni volta che un Client invia un messaggio, questo viene spedito a
tutti i Client collegati.
Con questo insieme di connessioni punto-a-punto il server simula una
connessione di tipo broadcast con tutti i client connessi, raggiungendo
lo scopo di inviare a tutti ogni messaggio che arrivi al server.
4
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerServer
Ripristino servizio in caso di caduta del Server.
•Server stateless, funzione esclusiva di distributore di pacchetti.
•In caso di caduta, è necessario ripristinare esclusivamente la
connessione coi client.
•Controllo persistenza demandata ai Client.
Problema: accorgersi tempestivamente della caduta del server; i client
devono essere progettati in modo da rendersi conto della chiusura di
connessione
.
vantaggio protocollo TCP
5
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerServer
Controllo persistenza server comunicazione:
•WDogThread
•SpyThread
WDogThread
SpyThread
Incrementa periodicamente un
contatore interno. Se il contatore
raggiunge un valore prefissato,
disabilita il server e ne crea uno
nuovo.
Periodicamente si registra presso
il server per controllarne l’attività.
In caso di registrazione effettuata
con successo, azzera il contatore
di WDogThread.
6
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient
7
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
All’avvio si connette al Server di comunicazione sull’indirizzo IP
passatogli dall’utente (porta impostata di default).
Il client di chat permette:
• l’invio di messaggi testuali tra i vari user;
• La creazione di una partita di Campo Minato tra giocatori
appartenenti alla stessa chat (cioè collegati allo stesso server).
PROBLEMATICHE:
1. Il server di comunicazione è stateless; chi mantiene le
informazioni riguardanti la partita, al momento della creazione e
durante il suo svolgimento?
2. Ogni client deve avere una copia della partita; e la congruenza tra
i dati?
3. Come avviene lo scambio di dati?
.
8
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
PROTOCOLLO DI COMUNICAZIONE:
I messaggi per il Campo Minato vengono passati sullo stesso canale di
comunicazione utilizzato per la chat.
Garanzia recapito messaggi intrinseca nel TCP.
PRO: utilizzo di una risorsa preesistente (e scarsamente occupata).
CONTRO: necessità di differenziare i messaggi di chat da quelli “di
sistema”.
.
Creazione e gestione di una grammatica per il mascheramento dei
messaggi “di sistema”.
9
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
CREAZIONE DELLA PARTITA:
Il client di chat (ClientCF ) che avvia la partita crea un processo che si
occuperà delle problematiche tipiche di gestione e sincronizzazione
dell’avvio della partita ( AscoltatoreCM ):
• interrogazione degli altri client;
• ricezione accettazioni;
• avvio partita e sincronizzazione con gli altri Client.
..
MESSAGGI DI CREAZIONE E SINCRONIZZAZIONE:
AscoltatoreCM : ***#PARTITA
ClientCF : @@@#yourName
AscoltatoreCM : ***#yourName#turno
AscoltatoreCM : ***#CREA#yourName1#yourName2#yourName3
Messaggi inviati in BROADCAST : necessità di mascheramento sui
client non interrogati.
10
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
SVOLGIMENTO DELLA PARTITA:
All’atto della creazione della partita, vengono creati 2 processi, su ogni
Client:
•CMContainer: “contenitore” della GUI e creatore dei messaggi per la
trasmissione delle mosse svolte dall’utente.
• AscoltatoreCM: capta i messaggi inviati dai CMContainer (anche il
proprio ) e aggiorna lo stato della partita.
CMContainer e AscoltatoreCM sono Client del MessengerServer.
Client aggiornati tutti contemporaneamente per mantenere la
congruenza dei dati.
Ogni volta che CMContainer invia un messaggio, viene stabilita una
nuova connessione  miglior ripristino in caso di crash del server.
11
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
SINCRONIZZAZIONE DURANTE LA PARTITA:
Un solo giocatore alla volta deve aver la possibilità di poter fare la
propria mossa.
Introduzione e gestione del concetto di turno di gioco.
MESSAGGI DURANTE LA PARTITA:
***#BOMBA#x#y#player
***#NOBOMBA#x#y#turno
***#VITTORIA#x#y#player#vict
***#PAREGGIO
Condizioni di gioco normali
Condizioni di fine partita
scatenate dall’ultima bomba
12
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
MessengerClient:
INTERFACCIA GRAFICA:
.
E la classe Bomb?
Contiene le informazioni riguardanti la posizione delle bombe.
Possibili molto scelte implementative, realizzata la più semplice,
estendibile.
13
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Scelte progettuali: difetti…
Gestione Socket con connessione TCP richiede un carico maggiore di
una comunicazione senza connessione.
Il basso numero di processi, e il ridoto numero di messaggi scambiati
hanno fatto propendere per questa soluzione.
Problemi legati alla centralità della comunicazione.
Maggior carico lato Client, per le scelte di gestire e memorizzare le
informazioni su ogni client.
Necessità di politiche di sincronizzazione e di controllo di
congruenza dei dati tra i vari client  carico maggiore sui Client.
14
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Scelte progettuali: … e pregi
La scelta delle socket con connessione TCP offre la garanzia che i
messaggi siano sempre recapitati (se il sistema funziona
correttamente).
Un sistema C/S semplifica la gestione della comunicazione.
Il server di comunicazione, essendo stateless, è più facile da
ripristinare ( necessario solo il ripristino della comunicazione).
Mantenendo lo stato su ogni client è facilitata la gestione di eventuali
blocchi o malfunzionamenti (implementati in questa versione solo
risoluzione problemi di connessione).
15
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Conclusioni:
E’ stato realizzato un sistema C/S che deve essere analizzato da due
ottiche diverse:
•Punto di vista della comunicazione: sistema tipicamente C/S.
•Punto di vista logico a livello applicativo: sistema distribuito che
ricorda una struttura P2P, in cui ogni cliente gestisce a turno
l’applicazione, diventando di fatto il server logico dell’applicazione.
16
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006
Scarica

presentazione