Bonjour, je réalise une application client/serveur et je souhaite envoyer un message (String) au serveur.
Voici le Serveur :
La classe MultiClient:
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 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); } } }
Et en enfin le 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 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(); } } }
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.
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 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(); } }
Pourriez vous m'aider ?
Partager