Bonjour,

Je suis en train de crée une application qui envoi un objet serialiser à travers une socket.
L'application fonctionne du serveur vers le client. Par contre le thread de réception du serveur ne fonctionne pas.
Il renvoi l'erreur "invalid type code: AC".

Je vous remercie d'avance pour vos réponses.

Voici mon code.


##############################
Classe Main
##############################
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
 
public static void main(String[] args) {
 
        String coucou = JOptionPane.showInputDialog(null, "client ou serveur", "Type", JOptionPane.OK_OPTION);
        if (coucou.equals("client") || coucou.equals("Client")) client();
        else serveur();
        //if (args.length > 0) client();
        //else serveur();
    }
 
public static void client ( ) {
        System.out.println("Client");
        // ouvrir une socket sur un port / localhost
        try
        {
            s = new Socket("localhost",62525);
            out = new ObjectOutputStream(s.getOutputStream());
            createMainForm(s,"Client");
        }
        catch(Exception e)
        {
            System.out.println("Erreur creation socket");
        }                         
    }
 
public static void serveur ( ) {
 
        System.out.println("Serveur");
        // ouvrir une socket sur un port en tant que serveur
        try
        {
            srv = new ServerSocket(62525); //instanci la socket sur le port
            s = srv.accept(); //bloquant
            //Cree la forme principal
            createMainForm(s,"Serveur");
        }
        catch(IOException e)
        {
            System.out.println(e.getMessage());
            System.exit(0);
        }
        catch(Exception e)
        {
            System.out.println("Erreur creation socket et accept");
            System.exit(0);
        }       
    }
 
private static void createMainForm(Socket s, String title)
    {
        // creation d'un nouveau dessin
        a = new Dessin(s);
		...
	}
##############################
Classe Dessin
##############################

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
 
public Dessin(Socket s)
    {
        formes = new ArrayList();
        this.s  = s;
        try
        {
            in = new ObjectInputStream(s.getInputStream());
            out = new ObjectOutputStream(s.getOutputStream());
        }
...
}		
public synchronized void readSocket()
     {
        Object f;
        try {
            f = in.readObject();
            //f  = in.readUnshared();
            System.out.println("Flag de l'objet recu : "+ ((Forme)f).getAdd());
 
            if(((Forme)f).getAdd())
            {
                this.addForme((Forme)f);
                System.out.println("Ajout de la forme recu");
            }
            else //flag de suppression de forme
            {
                this.deleteForme((Forme)f);
                System.out.println("Effacement de la forme recu");
            }
            System.out.println("Objet recu : "+f.toString());
        }
        catch(Exception e)
        {
            System.out.println("Erreur dans la reception des donnees : " + e.getMessage());
        }
     }