bonjour,
Jai un programme serveur et un programme client en java qui doivent discuter entre eux. Le pb c'est que la discussion n'est pas au point. Mon client doit envoyer des données au serveur, puis le serveur en envoyer d'autres.
Le pb c'est que le serveur n'arrive meme pas a lire les données envoyées du client.
Voici du code:
Appli 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 public class Server { public static final int port=12345; private ServerSocket server; public Server(){ try { server=new ServerSocket(port); while (true) { //création de nouvelles connexions Socket s=server.accept(); new Connection(s); } } catch (IOException e) { System.out.println("Error when creating Socket object: "+e.getMessage()); System.exit(1); } } }Appli 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
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80 package server; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; public class Connection { private Socket client; //link with client private BufferedReader fromClient; //receive request private PrintWriter toClient; //send answer private TreatClientRequest treatClientRequest; private ExecuteCommandClearCase execCCcmd; StringBuffer buf=new StringBuffer(); public Connection(Socket client) { System.out.println("connection accepted..."); this.client=client; try { // flow creation from/to client fromClient=new BufferedReader( new InputStreamReader(client.getInputStream())); toClient=new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream()))); System.out.println("lecture de la requete du client:"); readClientRequest(buf,fromClient); //afficher la requete du client: System.out.println("requete client\t"+buf+"\nfin req client"); System.out.println("yo! VA ETRE ENVOYE"); toClient.println("yo!\r\n\r\n"); toClient.flush(); System.out.println("envoyé"); //end } catch (IOException e) { e.printStackTrace(); try { client.close(); } catch (IOException ee) {ee.printStackTrace();} } stop(); } public void stop() { try { client.close(); } catch (IOException e) { System.out.println("Exception when closing connection: "+e); } } public void readClientRequest(StringBuffer buf,BufferedReader br){ String line; try { while((line=br.readLine())!=null){ buf.append(line).append("\n"); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new Server(); } }
Merci
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 package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; public class ClientEssai { protected static final int PORT=12345; public static void main(String[] args) { Socket s=null; try { s=new Socket(InetAddress.getByName("localhost"), PORT); BufferedReader sin=new BufferedReader(new InputStreamReader(s.getInputStream())); PrintStream sout=new PrintStream(s.getOutputStream()); System.out.println("Connexion : "+ s.getInetAddress()+ " port : "+s.getPort()); String ligne; while (true) { System.out.print("?"); System.out.flush(); ligne="donnes client envoyé"; sout.println(ligne); sout.flush(); System.out.println("ligne sent"); ligne=sin.readLine(); if (ligne==null) {System.out.println("Connexion stoppee par le serveur"); break;} System.out.println("!"+ ligne); } } // try catch (IOException e) {System.err.println(e);e.printStackTrace();} finally {try {if (s!=null) s.close();} catch (IOException e2){e2.printStackTrace();}} } // main }
Partager