Serialisation d'objet à travers une socket

BloP68 Messages postés 31 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 25 février 2009 - 25 févr. 2009 à 09:47
BloP68 Messages postés 31 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 25 février 2009 - 25 févr. 2009 à 09:53
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".


Merci d'avance.

Voici mon code





.


 





##############################




Classe Main





##############################







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





##############################




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


());








}








}

1 réponse

BloP68 Messages postés 31 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 09:53
Je reposte le code.
Désoler.
Voici mon code.

##############################   
Classe Main
##############################   

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
##############################   
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());
        }
     }
0
Rejoignez-nous