Bonjour, je me suis recemment lancé dans un projet "'chat".
Je bien de commencer, mais deja un probleme apparait.
Voici les codes:
serveur:
thread 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 import java.net.*; import java.io.*; public class serveur { public static void main(String[] args) throws Exception { ServerSocket serveur = new ServerSocket(9334); String name; System.out.println("serveur initialisé"); try { while(true) { Socket client = serveur.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); name = reader.readLine(); threadServeur t = new threadServeur(client, name); t.start(); } }catch(Exception e) { e.printStackTrace(); } } }
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
19
20
21
22
23
24
25
26
27
28
29 import java.net.*; import java.io.*; import java.util.*; public class threadServeur extends Thread { Socket client; String name; Scanner sc = new Scanner(System.in); public threadServeur(Socket client, String name) { this.client = client; this.name = name; } public void run() { try { BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); while(client.isConnected()) { String message = reader.readLine(); System.out.println("message de " + name); System.out.println(message); String messageEnvoi = sc.nextLine(); writer.write(messageEnvoi); writer.flush(); } }catch(Exception e) { e.printStackTrace(); } } }
Comme vous pouvez le constater, je n'en sui qu'au debut, c'est normal qu'il n'y est presque rien.
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 import java.net.*; import java.io.*; import java.util.*; public class client { public static void main(String[] args) throws Exception { System.out.println("client initialisé"); int port = 9334; InetAddress ip = InetAddress.getLocalHost(); Socket client = new Socket(ip, port); Scanner sc = new Scanner(System.in); String str; String message; try { BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); System.out.println("votre pseudo: "); str = sc.nextLine(); writer.write(str); writer.flush(); while(client.isConnected()) { str = sc.nextLine(); writer.write(str); writer.flush(); message = reader.readLine(); } }catch(Exception e) { e.printStackTrace(); } } }
Laintenant voici le probleme:
c'est dans l'envoie/recu des messages.
A chaque fois, avant de pouvoir envoyer un message, il faut attendre qu'il lise un message, vu que la methode read bloque le code.
J'aimerai donc savoir comment je peux faire pour que:
l'on puisse envoyer ders messages comme on veut tout en affichant tout ce qui est recu.
Merci d'avance pour vos reponses
Partager