![]() La porta su cui rimanere in ascolto viene passata al costruttore della classe: import java.io.Below is the syntax highlighted version of ChatClient.java ![]() Questa classe si occupa unicamente di stare in ascolto su una data porta, tramite l'oggetto ServerSocket, e non appena riceve una connessione ne delega la gestione del Socket appena creato all'oggetto ChannelsManager e si rimette subito in ascolto per accettare nuove connessioni. Il ChannelsManager inserisce l'utente loggato (che si è identificato tramite un nome) in una mappa (HashMap) che ha come chiave il nick, e come valore il rispettivo ThreadChannel. 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.ĭa notare che un ThreadChannel è caratterizzato da due stati, uno che riguarda il solo accesso al server senza possedere una propria identificazione (un nick, una username) e l'altro stato riguarda appunto il login effettuato. 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. 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. La classe che provvede ad instaurare le connessioni è MrChatServer e ne affida l'inizializzazione alla classe ChannelsManager. 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. Ognuno di queste classi svolge un suo ruolo particolare nello sviluppo dell'intero server. Vediamo le classi che compongono il nostro server, e che utilizzano ampiamente gli oggetti citati sopra: I metodi necessari per utilizzare gli stream di scrittura e lettura della classe Socket sono: 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. Tramite queste due classi possiamo facilmente implementare un server e gestire connessioni in remoto con l'oggetto Socket. Le classi che riguardano la gestione di questo protocollo sono: Quello che ha noi interessa in questo articolo sono le classi riferite al TCP/IP (Trasfert Control Protocol) che è un protocollo orientato alla connessione. Java implementa due tipi di protocollo a livello di trasporto, il TCP/IP e l'UDP. Il networking in java viene gestito all'interno del package con l'ausilio (per la gestione degli stream) delle classi definite all'interno del package java.io. Tutto ci sarà più chiaro nell'analisi delle classi. 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. ![]() 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. 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. 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. Una chat è principalmente composta da tre componenti fondamentali: il server, il client, ed il protocollo. 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. Esistono diversi metodi per sviluppare una chat, come diverse sono le tipologie di chat presenti oggi su internet. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |