Bonjour / Bonsoir,
Je suis entrain de réaliser une application Client/Serveur utilisant les sockets.
Lorsque le client n°1 ce connecte au serveur et qu'il envoie un message, le message est envoyer au serveur qui lui, doit renvoyer le message au client. Pour le moment, cela marche très bien.
Mais lorsque le client n°1 et le client n°2 ce connecte au serveur et que le client n°1 envoie un message, il n'est envoyer qu'a lui et non aux autres client (ce qui veut dire que le client n°2 ne reçoit rien).
Je voudrais donc savoir, ce que je doit changer dans le code si dessous pour que lorsque le serveur envoie le message d'un client, il soit envoyer a tous les clients et pas qu'à un seul.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 package ServeurThread; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.*; public class ServiceTh extends Thread { private final Socket socket; private final int Client_Count; String temps; ArrayList<String> liste = new ArrayList<>(); public ServiceTh(Socket socket, int Client_Count){ super(); this.socket = socket; this.Client_Count = Client_Count; } @Override public void run() { try{ InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os, true); //pw.println("Connexion au serveur réussi !"); temps = new SimpleDateFormat("HH:mm:ss").format(new Date(System.currentTimeMillis())); System.out.println("\n["+temps+"] Connexion du client: "+socket.getRemoteSocketAddress()+". Etat: Accepter"); System.out.println(" Client n°"+Client_Count+" depuis le démarrage du serveur.\n"); while(true){ if(!br.ready()){ System.err.println("Erreur: BufferedReader non 'ready' !"); } else{ String req = br.readLine(); //enregistrement du message du client dans la variable "req" (type String) temps = new SimpleDateFormat("HH:mm:ss").format(new Date(System.currentTimeMillis())); //Utilisation du temps System.out.println("["+temps+"] Envoie d'un message par: "+req); //Envoie d'une notification dans la console pw.println(req); //Envoie du message /* Je pense qu le probleme viens de la ligne "pw.println(req);" qui envoie le message a un seul client et non aux autres*/ } } }catch(Exception e){ e.printStackTrace(); } } }
Merci.
Partager