Serialisation objet dans socket
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:
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:
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());
}
} |