Salut, pour tester les fonctionnalités réseau j'essaye de créer un petit "chat" qui fait serveur client en même temps donc..
Je crée une Thread qui permet au serveur du programme de regarder les connections entrantes et mon programme principale envoi des lignes sur ce même serveur (c'est pour tester) => donc je crée un serveur sur localhost et dans le programme principal j'envoi aussi sur localhost.
Le problème est que le serveur reçoit bien la connection lors de l'envoi (ne bloque pas sur accept()) mais impossible de lire la ligne avec readline()
Je précise que quand je remplace readline par un simple texte, à chaque envoi le serveur affiche bien le texte statique.
Voici le code :
classe principal :
classe ChatServer :
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 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { /** * @param args * @throws IOException */ public static void main(String[] args) { // TODO Auto-generated method stub BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String ip,line; int port; System.out.println("Entrez l'adresse ip :"); try { ip = input.readLine(); System.out.println("Entrez le port :"); port = Integer.parseInt(input.readLine()); ChatServer chat = new ChatServer("localhost",port);//System.out.println("ok"); chat.start(); //chat.send("envoi"); while((line = input.readLine()) != null) { chat.send("localhost",line); } chat.interrupt(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
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
46
47
48
49
50
51
52
53
54
55
56
57
58 import java.io.*; import java.net.*; public class ChatServer extends Thread { String ip; int port; ChatServer(String ip,int port) { this.port = port; this.ip = ip; } public void run() { try { ServerSocket servSoc = new ServerSocket(this.port); //servSoc.setSoTimeout(5000);//System.out.println(ip); while(!isInterrupted()) { Socket soc = servSoc.accept(); InputStream flux = soc.getInputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(flux)); //System.out.println("aff"+input.readLine()); //listen(input.readLine()); String msg = input.readLine(); System.out.println(msg); } System.out.println("END"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void send(String ip, String line) { Socket soc; try { soc = new Socket(ip,this.port); BufferedWriter output = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())); output.write(line); output.flush(); System.out.println("envoyer"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void listen(String line) { System.out.println("Reçu : " + line); } }
Partager