Bonjour
Je débute en programmation réseau en Java. J'ai un petit problème au niveau du dialogue entre le client et le serveur.
Le client doit envoyer un message au serveur et le serveur renvoyer ce message au client.
Le problème c'est que le serveur reçoit bien le message du client mais ensuite, n'arrive pas à l'envoyer. En fait, le serveur n'arrive pas à envoyer de message au client ou alors le client n'arrive pas à recevoir, je ne sais pas.
Voila les codes.
Client :
et Treatment est ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 new Treatment(csock); // thread de reception
Donc côté client, la réception se fait dans un thread à part.
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 class Treatment implements Runnable{ Socket client ; public Treatment(Socket client){ this.client = client ; Thread _t = new Thread(this); _t.start() ; } private String receiveData(Socket csock) throws IOException{ BufferedReader buf = new BufferedReader(new InputStreamReader(csock.getInputStream())); return (String)buf.readLine(); } public void run(){ String msg ; try{ do { msg = receiveData(this.client); System.out.println(msg); }while(!msg.equals("stop")); System.out.println("stoppp"); }catch(IOException ioe){ System.out.println("Erreur a l'envoi... " + ioe.getMessage()); } } }
Serveur :
Maintenant, côté serveurCôté serveur, tout se passe dans le thread (envoie+réception).
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 class Treatment implements Runnable{ Socket client ; public Treatment(Socket client){ this.client = client ; Thread _t = new Thread(this); _t.start() ; } private void sendData(Socket csock, String msg) throws IOException{ BufferedOutputStream bos = new BufferedOutputStream( csock.getOutputStream()); PrintWriter os = new PrintWriter(bos, false); os.println(msg); os.flush(); } private String receiveData(Socket csock) throws IOException{ BufferedReader buf = new BufferedReader(new InputStreamReader(csock.getInputStream())); return (String)buf.readLine(); } public void run(){ try{ String msg ; sendData(this.client, "Bonjour au client"); do { msg = receiveData(this.client); System.out.println(msg); sendData(this.client, msg); }while(!msg.equals("stop")); sendData(this.client, "Connection stopped"); }catch(IOException ioe){ System.out.println("Erreur a l'envoi... " + ioe.getMessage()); } } }
Comme vous le voyez, j'utilise exactement le même code pour le client et le serveur.
Et pourtant :
- le serveur recoit bien mais n'envoie pas (ou alors le client ne reçoit pas)
- le client envoie bien mais ne reçoit pas (ou le serveur n'envoie pas).
Merci
Nas'
Partager