Bonjour,
Je suis entrain de faire un petit jeu de uno online, et je suis dans les début de l'application.
Voici ce que mon appli devrait faire :
1) Le client entre son login
2) La connection au serveur s'établie
3) Le client envoie les données pour le login et le mot de passe
4) Le serveur reçoit et va checker dans la base de donnée
5) Si c'est bon il renvoie une confirmation positive au client sinon un rejet.
6) Le client reçoit et affiche un message.
Au point 5 tout flanche, des deux côtés. Au moment ou le serveur crée l'objet ObjectOutputStream et le client l'objet ObjectInputStream
, des deux côtés ils me disent que le socket est fermé. J'ai vérifié ligne par ligne avec debug ou sans le client et le server, mais à aucun moment il ne ferme le socket. Je vous donne les consoles d'erreur car celui du client est spécial.
Je vous donne aussi le code associé au bouton d'envoi du client:
Voici le code de la méthode network du 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 String nickname = jTextFieldNickname.getText(); String password = jTextFieldPassword.getText(); String answer = null; if(!nickname.isEmpty() && !password.isEmpty()){ try { Player player = new Player(nickname, password); cmdToServer cmd = new cmdToServer(network); answer = cmd.ConnectServer(player); } catch (ClassNotFoundException ex) { Logger.getLogger(menuHome.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(menuHome.class.getName()).log(Level.SEVERE, null, ex); } } JOptionPane jop1 = new JOptionPane(); JOptionPane.showMessageDialog(null, "Message informatif", " Connection reussie :"+answer, JOptionPane.INFORMATION_MESSAGE);
L'erreur se trouve à cet endroit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part in = new ObjectInputStream(skt.getInputStream());Ici la méthode ConnectServer employé plus haut :
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 public class Network { private Socket skt; private ObjectOutputStream out; private ObjectInputStream in; public Network(){ try { openConnection(); } catch(Exception e) { try { System.out.print("Whoops! It didn't work! : +" + e.getMessage() + "\n"); skt.close(); System.out.println("Socket closed\n"); } catch (IOException ex) { Logger.getLogger(Network.class.getName()).log(Level.SEVERE, null, ex); } } } /* Open the connection */ private void openConnection() throws IOException{ skt = new Socket("192.168.1.34", 1991); System.out.println("Connection to the server."); } public void writeObject(Object object) throws java.io.IOException{ out = new ObjectOutputStream(skt.getOutputStream()); out.writeObject(object); System.out.print("Packet sent : "+object.getClass()+" - to "+ skt.getInetAddress() +"\n"); out.flush(); out.close(); } public Object readObject() throws java.io.IOException, ClassNotFoundException{ if(in == null){ in = new ObjectInputStream(skt.getInputStream()); }else{ } Object object = in.readObject(); in.close(); System.out.print("Packet receive : "+object+" - from "+ skt.getInetAddress() +"\n"); return object; } public void closeConnection(){ try { this.in.close(); this.out.close(); this.skt.close(); } catch (IOException ex) { Logger.getLogger(Network.class.getName()).log(Level.SEVERE, null, ex); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public String ConnectServer(Player player) throws IOException, ClassNotFoundException { cmdToClient ctc = new cmdToClient(); Data data = new Data(); data.setData("CONNECT:playerConnectServer"); Object[] o = {player}; data.setObject(o); network.writeObject(data); return ctc.analyse(network.readObject()); }Envoyé par Console serveur
Avez-vous une idée ?Envoyé par Console client
Cordialement,
rXp>!<
Partager