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

Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 20 août 2006 à 10:48 - Dernière réponse : Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention
- 20 août 2006 à 13:20
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 ...
Afficher la suite 

4 réponses

Meilleure réponse
tucobouch 207 Messages postés vendredi 17 février 2006Date d'inscription 1 mai 2009 Dernière intervention - 20 août 2006 à 13:16
3
Merci
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] -

Merci tucobouch 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de tucobouch
tucobouch 207 Messages postés vendredi 17 février 2006Date d'inscription 1 mai 2009 Dernière intervention - 20 août 2006 à 11:33
1
Merci
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] -
Commenter la réponse de tucobouch
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 20 août 2006 à 13:10
1
Merci
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 ...
Commenter la réponse de Ombitious_Developper
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 20 août 2006 à 13:20
1
Merci
Seulement je veux vous dire MERCI ...
Commenter la réponse de Ombitious_Developper

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.