Bonjour,
Je suis en train de faire un Chat en local, mais je rencontre un problème, pour m'assurer qu'il n'y est pas 2 utilisateurs connecté avec le même pseudo j'ai une arraylist statique au niveau du serveur contenant tout les utilisateurs connecté au système.
Depuis ma classe client je fais appel à addUsers, méthode static de ma classe serveur qui va vérifier la présence du pseudo, si il n'y est pas alors ajout dans l'arraylist, le problème c'est que l'ajout n'est pas pris en compte on dirais qu'il agit comme une nouvelle variable d'instance alors que j'ai bien déclaré l'arrayliste en statique.
Codes classe client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 //Connexion au serveur et ajout de l'utilisateur dans la liste reprenant ceux-ci. if(MessengerServeur.addUsers(nomUtilisateur)) { socketClient= new Socket(InetAddress.getByName(adresseServeur), PORT_SERVEUR); //Créer le Thread de réception des messages entrants. threadRecepteur= new ThreadRecepteurPaquet(ecouteur); threadRecepteur.start(); //Mettre à jour le drapeau estConnecte. estConnecte= true; //Affichage nouveau utilisateur connecté. //Créer et démarrer un nouveau ThreadEmetteur pour livrer le message. new ThreadEmetteur(socketClient, nomUtilisateur, "vient de se connecter à " + new DateJour().getCurrentHour() + ".", true).start(); } else retour=1; //Nom d'utilisateur déja existant.
Codes serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 //ArrayList contenant la liste des utilisateurs connectés sur le serveur. public static ArrayList<String> listeUsers=new ArrayList<String>(); //Démarrer le serveur de chat. public void demarrerServeur() { //Créer le serveur et administrer les nouveaux clients. try { //Créer un ServerSocket pour les connexions entrantes. ServerSocket socketServeur= new ServerSocket(PORT_SERVEUR, 100); System.out.println("Le serveur est à l'écoute sur le port " + PORT_SERVEUR + " ..."); //Se mettre à l'écoute permanente de clients. while (true) { //Accepter la connexion d'un nouveau client. Socket socketClient= socketServeur.accept(); //Créer un nouveau ThreadRecepteur pour la réception //de messages d'un client. new ThreadRecepteur(this, socketClient).start(); //Afficher les informations de connexion. System.out.println("Connexion reçue de : " + socketClient.getInetAddress() + " Nb users connectés : " + listeUsers.size()); } //Fin boucle while. } //Fin de try. //Gérer toute exception à la création du serveur //et à la connexion des clients. catch (IOException ioException) { ioException.printStackTrace(); } } //Méthode qui ajoute un utilisateur à la liste si celui ci n'existe pas. public static boolean addUsers(String nomUtilisateur) { if(listeUsers.contains(nomUtilisateur)) return false; else { listeUsers.add(nomUtilisateur); return true; } }
Partager