Envoi d'un message à un serveur
Bonjour, je réalise une application client/serveur et je souhaite envoyer un message (String) au serveur.
Voici le Serveur :
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
| public class InterfaceServeur extends javax.swing.JFrame {
ServerSocket serverSocket;
Socket socket;
Port port;
public void startServeur () {
port.setPort(Integer.parseInt(jPort.getText()));
try {
serverSocket = new ServerSocket(port.getPort());
Thread t = new Thread (new MultiClients(serverSocket));
t.start();
afficheServeur.append("\n Le serveur est démarré");
BufferedReader sisr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str1 = sisr.readLine();
System.out.println("RECU = " + str1); // trace locale
sisr.close();
socket.close();
}
catch (IOException e){
e.printStackTrace();
}
}
public InterfaceServeur() {
initComponents();
port = new Port ();
}
private void connexionServeurActionPerformed(java.awt.event.ActionEvent evt) {
startServeur();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new InterfaceServeur().setVisible(true);
}
}
} |
La classe MultiClient:
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
|
public class MultiClients implements Runnable {
private ServerSocket serverSocket;
private Socket socket;
private int nbClients = 1;
public MultiClients (ServerSocket serverSocket){
this.serverSocket = serverSocket;
}
public void run () {
try {
while(true){
socket=serverSocket.accept();
System.out.println("Le client numero "+nbClients+ " est connecté !");
nbClients ++;
socket.close();
}
}
catch(IOException e){
e.printStackTrace();
}
}
} |
Et en enfin le Client :
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
| public class JConnexion extends javax.swing.JDialog {
public boolean ok;
public IpPort ipPort;
Socket socket;
String idConnexion="";
public void envoyerIdConnexion(){
try{
PrintWriter sisw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
sisw.println(idConnexion);
sisw.close();
}
catch(IOException e){
e.printStackTrace();
}
}
private void validerActionPerformed(java.awt.event.ActionEvent evt) {
ipPort.setIp(jIp.getText());
ipPort.setPort(Integer.parseInt(jPort.getText()));
idConnexion=pseudo.getText()+"#"+mdp.getText();
try {
socket = new Socket (ipPort.getIp(),ipPort.getPort());
envoyerIdConnexion() ;
socket.close();
ok = true;
setVisible (false);
dispose();
}
catch(UnknownHostException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
} |
Le problème se situe au niveau du serveur à la ligne 17, l'erreur est un NullPointerException, ce qui signifie que 'socket' n'est pas instancié, or lorsque j'instancie 'socket' le serveur ne fonctionne pas correctement et le programme plante. La classe MultiClient fonctionne correctement lorsque je n'essaie pas d'envoyer de message au serveur cependant je pense qu'elle pose problème aussi lors de l'envoie de message.
Pourriez vous m'aider ?