Socket Client-Server ; Le client ne reçoit rien
Bonjour à tous,
Je suis encore novice au niveau de Socket JAVA, et j'ai décidé d'en apprendre plus mais je rencontre un problème.
J'ai repris le code du serveur ici
Et j'ai créé un client moi même.
Code:
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 113 114 115 116 117 118 119
| import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.logging.*;
import javax.swing.*;
public class Client extends JPanel implements ActionListener, Runnable{
static final int port = 18000;
JTextArea area;
JTextField message;
JButton envoyer;
Socket socket;
BufferedReader plec;
PrintWriter pred;
/**
* Constructeur
*/
public Client(){
/***** Création de l'interface graphique ****/
JFrame fenetre = new JFrame("Ma Fenêtre");
fenetre.setSize(200,200);
fenetre.setResizable(true);
fenetre.setLocationRelativeTo(null);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
area = new JTextArea();
message = new JTextField();
envoyer = new JButton("Envoyer");
envoyer.addActionListener(this);
this.setLayout(new BorderLayout());
this.add(area,BorderLayout.CENTER);
JPanel pane = new JPanel(new BorderLayout());
pane.add(message,BorderLayout.CENTER);
pane.add(envoyer,BorderLayout.EAST);
this.add(pane,BorderLayout.SOUTH);
fenetre.setContentPane(this);
fenetre.setVisible(true);
/**** Fin création de l'interface graphique ***/
this.gestionSocket();
new Thread(this).start();
}
/**
* Connection au server et initialisation des flux
*/
private void gestionSocket() {
try {
socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);
plec = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
} catch (UnknownHostException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Envoie d'un message
* Gestion de l'appuie sur le boutton envoyé
* @param e : évènement
*/
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Envoyer")){
String msg = message.getText();
if(msg!=null && !msg.equals(""));
pred.println(message.getText());
message.setText("");
}
}
/**
* Lanceur
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
new Client();
}
/**
* Ecoute des flux entrant ( message envoyés par le sever
*/
public void run() {
while(true){
try {
System.out.println("attend msg");
/*********** PROBLEME *************/
String msg = plec.readLine();//Problème ici, le client ne reçoit rien en flux d'entrée
/************* FIN PROBLEME ***************/
System.out.println("reçu");
if(msg != null && !msg.equals("")){
area.setText(area.getText()+msg+"\n");
}
} catch (IOException ex) {
System.out.println("problème réception : "+ex.getMessage());
}
}
}
} |
Comme indiqué dans les commentaire de mon code, String msg = plec.readLine(); ne reçoit jamais rien. Alors que le serveur envoie bien un flux de sortie vers le Client.
Où est mon erreur ? :arf: