IUT de Caen Département Réseaux et Télécommunications Année 2013-2014 8 janvier 2014 A. Lechervy D. Rohard IUT seconde année TP de synthèse : Réalisation d un chat Module I6 Interfaces graphiques et programmation événementielles Durée : 4h L objectif de ce TP est de réaliser une application de chat. Cette application permettra d établir un dialogue entre plusieurs utilisateurs. Vous réaliserez cette application en deux parties indépendantes. Vous aurez d un côté des client TCP en mode graphique qui enverrons des messages au serveur et de l autre coté un serveur qui stocke la discussion et la retransmet aux clients. Fig. 1 : Plusieurs clients se connectent au même serveur de chat. 1 Le client 1.1 L interface graphique Nous allons commencer par créer l interface graphique des clients.
Question 1.1 Commencer par créer la zone centrale de l interface graphique. Vous aurez : Une zone d affichage où sera inscrit la conversation. Une zone de saisie des messages. Un bouton d envoi. Votre interface graphique devra ressembler à ça : Fig. 2 : Intérieur de l interface graphique du serveur. N oubliez pas d utiliser un Layout adapté à la disposition des composants que vous souhaitez avoir. Question 1.2 Ajouter une barre de menu (JMenuBar). Vous aurez trois menu (JMenu) : Editeur Serveur Aide Ces menus contiendront les JMenuItem mis en figure Fig.3 1.2 Gestion des événements de l interface graphique Question 1.3 Commencer par relier le bouton Auteur du menu à un ActionListener qui ouvrira une fenêtre de dialogue affichant votre nom. Le rendu devra être similaire à la figure Fig.4. On utilisera pour cela la méthode statique showmessagedialog de la classe JOptionPane. Vous pouvez vous inspirer de l extrait de la javadoc de la figuer Fig.5 2
Fig. 3 : Barre de menu de l interface client Fig. 4 : Message sur l auteur du programme Fig. 5 : Extrait de la javadoc de JOptionPane 3
Question 1.4 Reliez le bouton Effacer du menu à un ActionListener qui efface la zone d affichage du chat (le JTextArea). Vérifier que le bouton fonctionne bien, en effaçant un texte que vous aurez au préalable écrit à l initialisation du JTextArea. Question 1.5 Reliez le bouton Quit du menu à un ActionListener qui quitte votre application. Question 1.6 Reliez le bouton Sauvegarder du menu à un ActionListener qui enregistrer le contenu de la zone de chat (le JTextArea) dans un fichier que vous aurez sélectionné avec un objet de la classe JFileChooser et la méthode showsavedialog. Vous pourrez vous inspirer du code donnée par la javadoc de la figure Fig.6. Testez votre code. Fig. 6 : Extrait de la javadoc de JFileChooser 1.3 La partie réseau La communication avec le serveur se fera à l aide d une connexion TCP. Le client envoi le message et en retour le serveur lui retourne l intégralité de la conversation. Une fois ces deux opérations effectués, le client clos la connexion TCP jusqu à l envoi d un nouveau message. L envoi d un message vide permettra au client de mettre à jour son fil de discussion. Question 1.7 Ecrire une méthode void envoyermsg(string msg) ;. Cette méthode ouvrira une connexion TCP avec le serveur sur le port 5000, enverra la chaine de caractère msg et attendra la réponse du serveur contenant tout le fil de la discussion. Vous pourrez vous inspirer du code de la figure Fig.7. Une fois la discussion reçu, vous mettrez à jour le contenu du JTextArea avec la chaine de caractère retournée par le serveur. Question 1.8 Faite en sorte que le bouton Envoyer fonctionne. Question 1.9 Créer une nouvelle méthode pour que le menu Charger les msg du serveur fonctionne. Vous utiliserez pour cela la méthode envoyermsg précédemment écrite avec la chaine de caractère. 4
Fig. 7 : Communication TCP du client 2 Le serveur Question 2.1 Créer un serveur en mode console. Le serveur lancera une boucle infini dans laquelle il traitera chaque requête des clients une par une. Question 2.2 Reprenez le code du client et ajoutez y un Thread permettant de mettre à jour la zone de chat à intervalle régulier. 5