Envoyer un objet (client / Serveur) [Résolu/Fermé]

Signaler
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Salut :

Je veux savoir comment envoyer un objet (en particulier un objet "Image") à travers une connexion client / serveur.
----------------------------------------------------------------------------------------------
J'ai pensé a envoyé un fichier dépuis le serveur vers le client contenant l'image puis à extraire un objet "Image".

Mon application a besoin d'un objet "Image" non pas de fichier.
----------------------------------------------------------------------------------------------
Et Merci ...

4 réponses

Messages postés
194
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
1 mai 2009
28
Sans passer par le disque : c'est exactement pareil :

en considerant que socket est ta Socket vers ton client sur le serveur :

Pour envoyer l'objet :

ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(monObjet);

Pour recevoir sur le client :

En considerant que server est la Socket vers ton serveur :

ObjectInputStream ois = new ObjectInputStream(server.getInputStream());
monObjet= (ClasseMonObjet) ois.readObject();

Tu vois, c'est hyper simple

- [TucoBouch] -
Messages postés
194
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
1 mai 2009
28
Salut!

En Java, tu peux facilement sauvegarder des objets vers un flux réseau ou sur le disque. Pour cela, on peut utiliser la Serialization. La serialisation permet d'écrire un objet (en fait, sauvegarde tous les champs de l'objet) et de pouvoir le recharger a l'identique au moment où il a été sauvegardé. C'est trés puissant et simple a mettre en oeuvre.

Mise en oeuvre :
Il suffit que la classe de ton objet implémente l'interface Serializable (de java.io). C'est une interface vide mais elle permet a la JVM de savoir que ta classe pourra etre serialisée.
Pour ecrire un objet dans un flux, par exemple dans un fichier, c'est fait en 3 lignes ! :
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(monObjet); //ecrit l'ojett

De meme, pour recuperer l'objet :
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
monObjet= (ClasseMonObjet) ois.readObject();

Ici, monObjete est du type ClasseMonObjet qui doit hériter de Serializable

public class ClasseMonObjet implements Serializable
{
etc...
};

Dans ces exemples, les sauvegarde/chargement sont dans des fichiers mais tu peux facilement faire ça dans une Socket (suffit de remplacer fis et fos vers les flux de ta socket). Tu pourra ainsi "transporter" des objets instanciés sur ton serveur vers ton client en quelques lignes. C'est super pratique!

- [TucoBouch] -
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
35
Salut :

Merci j'ai presque la même idée mais cette dernière ralentisse l'application.
Je veux envoyer un objet sur un flux et le récupérer à la volée sans passer par le disque (càd sans le sauvegarder en fichier).
Si cela est possible.
Sinon il faut se contenter de la première solution.
 
Et Merci ...
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
35
Seulement je veux vous dire MERCI ...