Una semplice chat in java
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
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:
- java.net.ServerSocket
- java.net.Socket
- public OutputStream getOutputStream()
- public InputStream getOutputStream()
- class MrChatServer
- class ThreadChannel
- class ChannelsManager
- abstract class ChatProtocol







