PROGRAMME DE MESSAGERIE INSTANTANEE Généralités Structure du code Détail de scénarios Précisions de fonctionnement Paul RICHIER Gautier LETAROUILLY 30/05/2012
SOMMAIRE I Contexte et généralités II Structure du code III Détail de quelques scénarios IV Précisions diverses I CONTEXTE ET GENERALITES Afin de faciliter les échanges au sein de votre entreprise N6K, nous avons convenu de développer un logiciel de messagerie instantanée permettant aux divers utilisateurs des divers services de communiquer entre eux, et de se transférer des fichiers. Chacun de ces utilisateurs pourra utiliser ce logiciel de messagerie sur un ordinateur fixe ou portable, dès lors que celui-ci est interconnecté aux autres via votre réseau. Ce dossier veut présenter l idée globale du fonctionnement du logiciel, et entrer dans le détail de certains cas d utilisation. Pour faire fonctionner la messagerie instantanée, vous aurez besoin de deux logiciels distincts : l un traitera l état du serveur (base de données ) et porte le nom N6KMessengerServer. L autre, du nom de N6KMessengerClient, gère les «clients de messagerie», c'est le logiciel qui sera lancé par les utilisateurs de la messagerie instantanée. Le fonctionnement de ces deux logiciels et leur interdépendance sera explicitée plus loin. Nous n avons pas développé dans ce dossier les détails de conception de l interface graphique, ni ceux des classes fournies pour le projet. Nous avons en revanche essayé de présenter au mieux, et de manière synthétique, le fonctionnement général du cœur de la messagerie. N oubliez pas de consulter également le «guide de l utilisateur», qui revient de façon plus «pratique» sur l utilisation des logiciels client et serveur. 2
II STRUCTURE DU CODE Commençons par une vue d ensemble du projet, en distinguant les deux logiciels et leur contenu (packages ). N6KMessengerClient Logiciel Client Tous les utilisateurs N6KClient PACKAGE N6KClient PACKAGE Net 3
N6KMessengerServer Logiciel Serveur Installé sur le serveur du réseau N6KServer PACKAGE N6KServer PACKAGE Net Ainsi, il faut lancer avant toute chose le logiciel Serveur sur le serveur du réseau. Ce logiciel (serveur) a pour but de contrôler les «Usernames» et les «Passwords» des différents clients (ou utilisateurs). C est aussi ce logiciel serveur qui sert de relai pour signifier la connexion/la déconnexion d un client, ou bien encore son changement de statut, via une Data Base qu il met à jour, et une communication avec chacun des clients à chaque changement. En revanche, le logiciel serveur est transparent à l échange de messages, et aux discussions en cours. Il traite exclusivement les modifications apportées à sa Data Base. 4
A présent, abordons plus en détails la structure de chacun de ces logiciels, avec les diagrammes de classes qui suivent. Diagramme de classes du programme N6KMessengerClient La fonction main qui se situe dans la classe N6KClient va initialiser l interface graphique et chercher le serveur en envoyant un broadcast pour récupérer l adresse du serveur. Dès lors, la communication serveur/client s établit, et l utilisateur peut commencer à entrer ses identifiants, qui seront vérifiés par le serveur (voir détails dans III). Dans le logiciel serveur, comme dans le logiciel client, un «log» enregistre toutes les opérations qui ont lieu sur le serveur, ou respectivement sur le client. Ainsi, l administrateur du serveur, et chacun des clients dispose d un historique de ses actions et de ses conversations. 5
Diagramme de classes du programme N6KMessengerServer Se connecter (en plus grand en.jpg) III DETAIL DE QUELQUES SCENARIOS 6
Changement de statut (en plus grand en.jpg) Connexion du client messagerie au serveur Il faut bien entendu que le logiciel serveur ait été préalablement lancé sur l un des ordinateurs du réseau. Sans cette précaution, le logiciel N6KClient sera dans l incapacité de se lancer. Au démarrage de N6KServer, les utilisateurs de la base de données sont tous réinitialisés (statut = offline ; pseudo = username). Lorsqu un logiciel client est démarré sur le réseau, ses paramètres sont initialisés, puis un contact est établi avec le serveur. Cette dernière action est appelée «handshake». Détail du fonctionnement de la prise de contact entre client et serveur (handshake) 7
A l issue de ce procédé, tous les échanges se font en unicast. L utilisateur est alors invité à entrer son username et son password. Ces informations sont reçues par le serveur qui s assure de l existence et de la concordance des identifiants, et qui envoie une réponse au client en conséquence. Si la réponse est positive, le serveur modifie sa base de données, en passsant le client «online», sinon le client informe l utilisateur de son erreur et l invite à reprendre la saisie de ses identifiants. Lors de la saisie des identifiants, les touches «Tab» et «Enter» sont fonctionnelles. On notera que les identifiants sont cryptés en MD5 dans la database pour éviter tout vol de données. Dès lors que les identifiants ont été contrôlés et acceptés par le serveur, le «MenuSwing» s affiche, avec un son d accueil sauf si une autre application audio est en cours sur le PC. La liste des utilisateurs est actualisée et affiche pour chaque utilisateur : le username (suivi éventuellement du pseudo s il diffère du username) et le statut de connexion (online, busy, ). Le chat par défaut «ISAE Chat» est créé et intégré à la liste des chats Rôle du «ISAE Chat» IV PRECISIONS DIVERSES Dès lors qu un utilisateur parvient à la «page d accueil», sa liste de discussions comprend une discussion rassemblant tous les utilisateurs connectés, et qui se nomme «ISAE Chat». Tout message publié dans cette discussion s adressera donc à l ensemble des utilisateurs connectés. C est en quelque sorte la discussion par défaut, entre tous les utilisateurs disponibles. Mais «ISAE Chat» n est pas seulement une discussion comme les autres. C est aussi l interface où apparaîtront l ensemble des alertes (avis de connexion/déconnexion d un utilisateur etc.). On considère donc que la boîte de dialogue «ISAE Chat» devra être ouverte à tout instant, et constituera le «salon» de discussion, où toutes les informations relatives aux autres utilisateurs parviennent. Alertes Les alertes (classe Info) parviennent à l utilisateur dans la discussion par défaut «ISAE Chat». Toutes les alertes sont datées, et certaines d entre elles sont accompagnées d un son. Des alertes ont été prévues pour signifier la connexion ou la déconnexion d un utilisateur. En revanche, on ne génère pas d alerte pour signifier un changement de statut (passage de «online» à «busy» par exemple), ni pour un changement de pseudo Les alertes «nouveau message» font l objet d un traitement différent. En effet, on veut éviter de polluer la fenêtre de discussion «ISAE Chat» par de nombreuses alertes de nouveau message reçu. C est pourquoi l utilisateur, lorsqu il recevra un nouveau message dans l une de ses discussions, n en sera notifié que par un son bref et relativement discret. Si le message est reçue dans la discussion qui est ouverte actuellement, aucun son n est produit. 8
Transfert de fichiers Le fichier à transférer est transformé en tableau de bits. Puis il est envoyé en unicast. A la réception du fichier, c est N6KClient qui doit «désérialiser» le fichier et s assurer de l écriture concrète sur le disque dur. La taille des fichiers n a volontairement pas été limitée, car les transferts sont prévus pour se faire en local, à 100Mo/s On notera que sous Linux, il n y a aucun probleme de chemin. Sous windows, les tests ont été plus durs à réaliser car les ordinateurs de l ISAE bloquent systématiquement nos applications Client et Server. Il subsiste donc un problème de chemin qui n est à ce jour pas résolu. Déconnexion inopinée Le serveur, outre s occuper de répondre aux requêtes (Receiver.java), contrôle aussi en permanence que tous les utilisateurs «online» sont bien toujours connectés. Pour cela, le serveur s assure qu il est possible de leur envoyer des unicasts. Si tel n est pas le cas (le client a perdu la connexion au réseau), le serveur procède lui-même à la procédure de déconnexion de cet utilisateur. Ainsi, il ne sera pas maintenu «online» dans la base de données. Remarques diverses Si l on regarde la console client au cours de son exécution, on remarquera des erreurs de type IndexOutOfBounds que nous n avons pu localiser et on se contentera de constater qu elle ne nuise en rien au bon fonctionnement de notre logiciel. Nous vous serions reconnaissants de ne pas cliquer trop vite partout. Des temps de latence ont été mis volontairement en place certains bugs. Avec une utilisation normale, nos derniers beta-testeurs n ont remarqué aucune anomalie. Avec un peu plus de temps Dans nos prochaines versions, si elles ont l occasion de voir le jour, nous essaierons d implémenter certaines fonctions supplémentaires qui sont : - L enregistrement des chats sur le serveur afin de pouvoir les reprendre si des utilisateurs se sont déconnectés sans quitter un chat. Actuellement, la déconnexion du réseau entraine la déconnexion aux différents chats en cours. - Le rajout d un avatar personnalisé, en plus d un statut et d un pseudo. Veuillez trouver ci-joint le guide de l utilisateur. Bien cordialement. 9