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:
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);
Voici le code de la méthode network du client.
L'erreur se trouve à cet endroit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
in = new ObjectInputStream(skt.getInputStream());
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);
        }
     }
 
}
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
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());
    }
Citation Envoyé par Console serveur
New connection !
Number of thread : 3
Packet receive : uno.Data@1050169 - from /192.168.1.37
class uno.Player
192.168.1.37
java.net.SocketException: Socket is closed
It didn't work! - Socket is closed
Supression of the addres : 192.168.1.37
Closing socket : 192.168.1.37
at java.net.Socket.getOutputStream(Socket.java:808)
Thread 192.168.1.37 interrupted
at unoserver.Network.writeObject(Network.java:23)
at unoserver.cmdToServer.acceptedConnect(cmdToServer.java:186)
at unoserver.cmdToServer.getPlayerConnectServer(cmdToServer.java:174)
at unoserver.cmdToServer.analyse(cmdToServer.java:75)
at unoserver.Server$ServerData.run(Server.java:94)
at java.lang.Thread.run(Thread.java:619)

Citation Envoyé par Console client
Connection to the server.
Packet sent : class uno.Data - to /192.168.1.34
8 juil. 2009 11:29:04 unoclient.menuHome jButtonOKActionPerformed
GRAVE: null
java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Unknown Source)
at unoclient.Network.readObject(Network.java:63)
at unoclient.cmdToServer.ConnectServer(cmdToServer.java:67)
at unoclient.menuHome.jButtonOKActionPerformed(menuHome.java:129)
at unoclient.menuHome.access$100(menuHome.java:24)
at unoclient.menuHome$2.actionPerformed(menuHome.java:70)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Avez-vous une idée ?

Cordialement,

rXp>!<