Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Una semplice chat in java

Articolo scritto da Antonio Coschignano
Pagina 1 di 6

Esistono diversi metodi per sviluppare una chat, come diverse sono le tipologie di chat presenti oggi su internet. Ciò che li distingue essenzialmente le une dalle altre, in riferimento a quelle testuali, è il protocollo di messaggistica che viene utilizzato dalle singole per scambiarsi i messaggi. Una chat è principalmente composta da tre componenti fondamentali: il server, il client, ed il protocollo. Il server gestisce le varie connessioni dei client mentre l'interpretazione dei messaggi è affidata ad un protocollo che client e server devono conoscere per potersi capire.

Quello che vedremo in quest'articolo è un modello di implementazione di chat in java basato su protocollo TCP/IP, dove si cerca di creare un server che mantiene un certo livello di astrazione per quanto riguarda il protocollo di messaggistica. Ciò significa che il server in questo caso si occupa di gestire le connessioni, gli stream dove leggere e scrivere i dati, e delega l'interpretazione dei messaggi ad una classe astratta cha ha libero accesso alle connessioni dove poter compiere qualsiasi azione. Questo ci consente di non legare l'implementazione del server all'interpretazione dei dati che passano sugli stream, ma sarà compito nostro creare una concretizzazione del protocollo e quindi poter riutilizzare questo server su qualsiasi altro protocollo. Tutto ci sarà più chiaro nell'analisi delle classi.

Il server

(L'articolo continua più sotto...)

Il networking in java viene gestito all'interno del package java.net con l'ausilio (per la gestione degli stream) delle classi definite all'interno del package java.io. Java implementa due tipi di protocollo a livello di trasporto, il TCP/IP e l'UDP. Quello che ha noi interessa in questo articolo sono le classi riferite al TCP/IP (Trasfert Control Protocol) che è un protocollo orientato alla connessione. Le classi che riguardano la gestione di questo protocollo sono:

Tramite queste due classi possiamo facilmente implementare un server e gestire connessioni in remoto con l'oggetto Socket. Di particolare importanza sono le modalità di trasmissione dei dati tramite i socket, che in java vengono gestiti come flussi di dati espressi concettualmente tramite gli oggetti di tipo java.io.InputStream e java.io.OutputStream, rispettivamente per leggere e scrivere dei dati attraverso i canali di comunicazioni. I metodi necessari per utilizzare gli stream di scrittura e lettura della classe Socket sono: Vediamo le classi che compongono il nostro server, e che utilizzano ampiamente gli oggetti citati sopra: Ognuno di queste classi svolge un suo ruolo particolare nello sviluppo dell'intero server. L'idea è quella di inquadrare ogni client che si connette al server come un canale (da non confondere con i canali delle chat IRC) dove su di esso si può scrivere e leggere messaggi. La classe che provvede ad instaurare le connessioni è MrChatServer e ne affida l'inizializzazione alla classe ChannelsManager. Quest'ultima crea un canale tramite la classe ThreadChannel, in base al Socket che gli viene passato, e si mantiene come riferimento all'interno di esse. Quindi tutti i ThreadChannel potranno inviari i dati che ricevono sugli stream al ChannelsManager dove a sua volta ne delega l'interpretazione al protocollo modellato nella classe ChatProtocol. Anche questa classe contiene un riferimento al ChannelsManager, in modo tale da poter accedere a tutti i canali e compiere azioni su di essi in base ai comandi che verranno implementati in una 'concretizzazione' del protocollo.

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Corso Ruby e Ruby On RailsCorso Ruby e Ruby On Rails
Creare software ed applicazioni Web con Ruby e ROR. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122