Progetto e
Realizzazione di un
servizio di Chat
Progetto di: Nicoli Leonardo
Corso di: Reti di Calcolatori L-S
Obiettivi
Realizzare una applicazione basata su un modello di
comunicazione più evoluto del Client/Server
in particolare:
Comunicazione via CHAT di utenti P2P
Requisiti
Ogni utente deve avere la possibilità di:
 Collegarsi ad un gruppo di utenti che
comunicano via chat,
 Inviare messaggi a tutti gli utenti in chat,
 Ricevere messaggi da tutti gli utenti in chat,
 Uscire da un gruppo di chat.
Inoltre…
 Realizzare un Server che gestisca l’elenco
degli utenti attualmente in chat
Struttura del sistema
Comunicazione UNO a MOLTI:  Come interconnettere gli utenti?
• Multicast
• Ogni utente con tutti gli altri
• Anello
M1
M1
B
A
C
D
M1
M1
Struttura del sistema
• Ogni nodo ha visibilità totale dell’anello
 Tutti conoscono tutti
 Possibilità di invio di Messaggi Privati
• Canali punto-punto come Connessioni TCP
 Possibili messaggi di conferma ricezione
 Preservano l’ordine dei messaggi
Inizializzazione
 utente può entrare e uscire dalla chat
 Anello fortemente dinamico

 nodo deve poter accettare richieste di connessione
Per inserire nuovi
utenti che si
vogliono unire alla
chat
Per richiudere
l’anello dopo
l’uscita di un utente
dalla chat
Inizializzazione
Necessità di un Server che fornisca all’utente che vuole inserirsi
l’indirizzo di uno degli utenti in chat da contattare
Server
Gruppo X
Client
IP:Porta
Gruppo 1: ….
Gruppo 2: ….
Protocolli
info
Server
•Richiesta
informazioni
•Iscrizione a
un gruppo
Client
Ci sono n gruppi:
1: ………
2: ……….
………..
n: ………..
Server
Gruppo X
Nome: Tizio
Server
Client
IP:123.145.78.15
Porta:2563
Protocolli
Ingresso
nel gruppo
Tizi
o
Tizio:
Inserito
Sempronio
Ip: ….
Porta:….
Caio
Semproni
o
Ip: …..
Porta: …
Client
Uscita dal
gruppo
fine
Tizio:
Inserito
Sempronio
Ip: ….
Porta:….
Caio, Ip,
porta
siamo in n
Tizio ip porta,
……..
fine
fine
Tizio
Semproni
o
Caio
fine
Tolleranza ai guasti
Canali punto-punto Bidirezionali
 Ad ogni invio di messaggio si attende la conferma di
avvenuta ricezione per un certo tempo
Se scatta il Timeout  rilevata caduta del nodo
 Apertura connessione con il successivo (chiusura anello)
 Invio messaggio di notifica
 Cancellazione dal Server dell’utente caduto
Scalabilità
Introduzione di un servizio di Nomi per poter avere diversi
Server reperibili dagli utenti attraverso nomi logici
Registra
www.chatter.it
IP : Porta
Gestore Nomi
OK
Server
Cerca
www.chatter.it
IP : Porta
Client
Implementazione in Java
Utilizzo del package java.net
Utilizzo del servizio di Nomi di Ambra Molesini
• Server parallelo
ServerSocket in attesa di connessioni e
un Thread generato per ogni Cliente
• Client Multithreaded
un thread in ascolto sulla ServerSocket, uno sulla
socket di ingresso, e uno sull’interfaccia grafica
Implementazione del singolo
nodo
2 uscite dove
accedere in scrittura
in mutua esclusione
(Socket e Pannello)
ed elenco ordinato
degli utenti in chat.
Interfaccia grafica
Elenco
utenti
Listener
CLIENT
Demone
Client
Socket di
Uscita
Server Socket
Rice
Thread
Socket di
Ingresso
Messaggi
Ogni nodo elimina i propri messaggi
Tutti i messaggi devono avere:
dopo un giro dell’anello
• Nome del Mittente
• Flag di Visibilità
Messaggio Pubblico o Privato
• Contenuto testuale
messaggi Privati devono inoltre avere:
• Nome del Destinatario
messaggi di Sistema (Notifica eventi)
devono avere come contenuto:
Ingresso:
Caduta:
• Keyword distintiva
• Informazioni aggiuntive:
IP, Porta, e
Nome
Nome
dell’utente
dell’utente
andato in
che entra
crash
Possibili sviluppi futuri
• Utenti in chat che potrebbero RIFIUTARE l’ingresso di un
nuovo utente
• L’utente che entra potrebbe esprimere PREFERENZE sulla
sua posizione nell’anello
• Messaggi di contenuto non solo testuale:
Scambio di file, oppure dati Multimediali
(gli utenti si Vedono tramite webcam)
•
Crittografia per aumentare sicurezza dei messaggi privati
Conclusioni
• Sistema Efficiente, Funzionale, e Semplice da usare
• Nodi Autonomi, che funzionano Senza distinzioni di
ruolo
• Possibile realizzare con questa struttura applicazioni
Complesse, Dinamiche, Flessibili ed Affidabili
Scarica

presentazione