Bonjour,
J'ai juste voulu m'amuser à créer une Simple Application Client-Server pour communiquer avec mes camarades. Sauf qu'elle fonctionne partiellement car le server peut lire le premier flux de la socket mais lorsque la socket envoie un deuxième flux cela n'arrive plus au niveau du serveur.
Je suis perdu Merci d'avance pour vos conseils.
Voici le code :
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
81
82
83
84 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class ClientArmel extends Thread{ Socket s=null; public ClientArmel() { super(); try { this.s=new Socket("localhost",300); System.out.println("vous etes connecte au server!!!"); Thread th= new Thread(this); th.start(); } catch (UnknownHostException e) { } catch (IOException e) { System.out.println("Impossible de se connecter au server"); } } public void run() { try { OutputStream os = s.getOutputStream(); PrintWriter pw= new PrintWriter(os,true); InputStream in= s.getInputStream() ; InputStreamReader isr= new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); String message = null; String rep =null; while(true) { Scanner entre= new Scanner(System.in); message = entre.nextLine(); System.out.println(message); pw.println(message); pw.flush(); while( (rep=br.readLine())!=null ) { System.out.println(rep); } entre.close(); br.close(); pw.close(); } }catch(Exception ex) { System.out.println(" Le client ne recoit pass le fluss !!"); } } public static void main(String[] args) { new ClientArmel(); } }
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; import org.omg.CORBA.portable.OutputStream; public class ServerArmel extends Thread { ServerSocket serverSocket ; Socket client ; static ServerArmel serverArmel ; public ServerArmel() { super(); serverArmel=this; Thread thread = new Thread(this); thread.start(); } public void run() { try { serverSocket = new ServerSocket(300); System.err.println("Le server est Connecte'"); }catch(Exception ex) { System.err.println("Impossible de connecter le Server"); } while(true) { try { client = serverSocket.accept(); System.err.println("le server attend une requtte "); }catch(Exception ex) { System.err.println("Problem de Connection avec le Client"); } Thread thread = new Thread(new Conversation(client)); thread.start(); } } public static void main(String[] args) { new ServerArmel (); } class Conversation extends Thread { Socket s =null; public Conversation(Socket s) { this.s=s; } public void run() { boolean start= false; while(!start) { try { InputStream in = s.getInputStream(); InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); java.io.OutputStream os = s.getOutputStream(); PrintWriter pw= new PrintWriter(os,true); String message =null; Scanner rep=null;; while(true) { while( (message = br.readLine())!=null ) { System.out.println("la socket a envoye un message"); System.out.println( s.getRemoteSocketAddress().toString()+" :"+message); rep = new Scanner (System.in); String reponse = rep.nextLine(); pw.println(reponse); pw.flush(); } br.close(); pw.close(); rep.close(); s.close(); } }catch(Exception ex) { System.out.println("Le server ne recoit pas le fluss !!!"); } } } } }
Partager