C'est tout à fait faisable. Ce principe s'appel la Sérialization.. En fait l'éméteur et le récepteur possédes tout deux le code de la classe, elle est transformer en texte coté éméteur, transmise via la socket, le texte reçu est transformer en une instance de la classe. Voilà pour le principe.
Pour le mettre en place, il te faut une classe dite Serializable, qui est partagée par l'émteur et le recepteur. Et ensuite l'envoyer via un ObjectOutputStream (java.io), et la lire via un ObjectInputStream (java.io).
Pour rendre une classe Serializable, il suffit de lui faire implémenter l'interface Serielizable (java.io) Pour cette interface, pas besoin de définir des méthodes supplémentaires.
Un exemple serait peut-être le bienvenue. Tout d'abord la classe des données, celle qui est envoyé via le Web.
import java.io.Serializable import java.util.Vector;
public class Donnee implements Serializable { private int quantite; private double prix; private String nom; private Vector descriptions;
//Constructeur sans paramétre nécessaire pour données les valeurs par défauts pour une classe Sérializable public Donnee() { quantite = 0; prix = 0; nom=""; descriptions=new Vector(); }
//Autre constructeur public Donnee(int quantite,double prix,String nom) { this.quantite = quantite; this.prix = prix; this.nom = nom; descriptions=new Vector(); }
//Ajoute une description public void ajouteDescription(String description) { descriptions.addElement(description); }
public int getQuantite() { return qaantite; }
//........ }
|
Bon je l'ai pas mise entiére, c'est juste un exemple.
Ensuite, pour transférer ta classe donnée, il faut creer un ObjectOutputStream, pour celà tu fais :
ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());
|
Puis le transfert :
Ou donnee est une instance de Donnee
Pour lire la a classe, il faut constriure un ObjectInputStream
ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
|
Et pour récuprée la donnée :
Donnee donnee=(Donnee)ois.readObject();
|
Bien entendu toute ces opértions de ctruction de lecteur ou d'écriveur de flux, et la lecture et l'ecriture, peuvent déclancher des IOException, danoc à capturer avec un try catch quelque part.
JHelp