Projet de programmation JAVA

Nicolas Becavin, Boris Gaillard
 

Le projet consiste à implémenter un programme de Talk (conversation entre 2 personnes en temps réel au clavier) et un serveur permettant la gestion des connexions, un dans le même principe qu' ICQ.
 
 
 

Apparence du programme et mode d'emploi

    Le serveur

        Le programme serveur permet de mettre en connexion les utilisateurs par l'intermédiaire d'un réseau IP. Il faut le lancer sur une machine dont l'adresse est bien sur connue.
        Celui-ci apparait alors avec une fenêtre unique, dans laquelle apparaissent tous les utilisateurs connectés.
 

    

    Le client (le programme de Talk)

        Chaque programme de Talk peut se connecter directement à un utilisateur en tapant son adresse IP dans le menu "Connection/Connexion à un utilisateur".
        Il est aussi possible de passer par l'intermediaire d'un serveur qui lui enverra une liste de noms et qui le rendra visible aux autres utilisateurs. Il faut alors passer par le menu         "Connection/Connexion au serveur".


 

    Une fois la connexion effectuée a un serveur, celui-ci renvoie la liste des utilisateurs déja connectés. Une liste de boutons se crée dans le programme de Talk et il suffit de cliquer sur l'un deux pour se connecter à la personne correspondante.
    Lors de connexion une fenêtre apparait avec 2 zones de texte. Celle du haut permet de rentrer du texte qui sera affichée chez l'utilisateur distant. Celle-du bas affiche le texte reçu.

    Il est possible de changer le nom qui est utilisé pour apparaitre aux autre utilisateurs avec al commande : "Connection/NickName".
 
 

Structure des programmes

Il existe 2 programme qui sont donc le Talk et le serveur :
 

    Composantes globales

Le package Common comporte des parties communes aux 2 programmes. Il s'agit notamment de classes servant à la communication sur le réseau.
 

Nous verrons plus loin que des classes descendent de Dispatcher et de ConnexionServer.
 

 

    Le programme de Talk

Ce programme est séparé en 2 parties :
Une première partie gère la connexion directe avec les clients. Il s'agit de la partie imlpémentée pour le mini-projet Java.

Une deuxieme partie gère la communication avec le serveur. Celle-ci se fait par l'intermédiaire de la classe DispatcherServer qui descend de Dispatcher.
La classe ServerInterface qui utilise une instance de DispatcherServer, gère la communication avec le serveur et réagit en fonction des commandes envoyée par celui-ci.
 

Parmis l'interface, il existe des boite de dialogue pour la mise a jour des paramètres. Elles sont implémentées dans les classes : DlgBoxGetNickName, About, FrameHostPort et FrameHostClient.
La classe PanelListUser qui descend de Panel, affiche la liste des boutons par l'intermediaire desquels il est possible de se connecter à un utilisateur.
 
 

    Le programme de Serveur

De la même facon que dans le programme de Talk, la communication se fait par l'intermédiaire de la classe Dispatcher et  une classe Serveur qui descend de ConnexionServeur est à l'écoute d'une nouvelle connexion.

Une liste d'utilisateurs est gére dans la classe UserList qui est du type Observable. En effet, la mise à jour de cette liste entraine un rafraichissement de la fenétre. Cette classe possède une liste d'instances de la classe User.  Celle-ci possède les informations sur chaque personne connectée.
 

Une classe daemonTestList permet la verification en permanence de la validité de la liste des personnes connectées. Si une déconnexion survient, elle est alors répercutée à tous les clients.
 

Télécharger les sources du projets