IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Envoi d'objet par réseau


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 121
    Par défaut Envoi d'objet par réseau
    Bonjour,

    tout est dans le titre, je cherche à envoyer un objet par le réseau.

    J'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Partie privé : 
     
    private ObjectOutputStream output; 
    private ObjectInputStream input; 
    output=new ObjectOutputStream(Csoc.getOutputStream()); 
    output.flush(); 
    input=new ObjectInputStream(Csoc.getInputStream()); 
     
    Ecriture d un message : 
     
    output.writeObject(new objet_a_envoyer(arg1,arg2)); 
    output.flush(); 
     
    Lecture d un message : 
     
    (objet_a_envoyer) input.readObject();
    J'ai essayé de l'utiliser pour un objet d'une classe voiture que j'ai crée.
    Malheureusement j'ai une erreur à la compilation pour la lecture de l'objet.

    voiture1 étant un objet de type voiture, lorsque j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    voiture1 = (voiture)input.readObject();
    -> "unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown"


    Help me

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    ça veux dire que cette méthode peut te renvoyer une exception et qu'il faut donc que tu l'intercepte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try{
    voiture1 = (voiture)input.readObject();
    }catch(ClassNotFoundException e)
    {
    System.err.println(e.getMessage());
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 121
    Par défaut
    Ah effectivement la compilation marche ^^ merci !

    Par contre... à l'éxecution, j'ai une erreur d'entrée sortie quand le programme arrive au "try { voiture1... ".

    Si je supprime le try et tout ce qu'il contient, le programme se déroule normalement, il y a donc un problème d'entrée sortie à cet endroit :s

    Une tite idée d'où ça peut venir ? ^^

  4. #4
    Invité
    Invité(e)
    Par défaut
    salut,
    comment tu envoie les objets il serait plus facile de les rendres sérailizable et les envoyer eux même.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 121
    Par défaut
    Salut,

    les objets sont envoyés par :
    output.writeObject(new objet_a_envoyer(arg1,arg2));

    Par contre je ne sais pas ce que c'est que de rendre un objet sérialisable :p (la définition de wikipédia m'éclaire pas vraiment).

    Je vous met la class du client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.net.*;
    import java.io.*;
     
    public class clientbis 
    {
       private ObjectOutputStream output; 
       private ObjectInputStream input; 
     
       public clientbis()
        {             
            String serveur="JESSICA"; //Nom du server   
            try 
            {
                Socket soc = new Socket(serveur, 5000);
                output=new ObjectOutputStream(soc.getOutputStream()); 
                output.flush(); 
                input=new ObjectInputStream(soc.getInputStream()); 
                voiture V1 = new voiture(2,2,2,2,true);
                try{V1=(voiture)input.readObject();}
                catch(ClassNotFoundException e) 
                    {System.err.println(e.getMessage());}
                soc.close();
            }
            catch(UnknownHostException e)
                { System.out.println("le nom du serveur est inconnu"); }
            catch(IOException e)
                { System.out.println("Erreur entree/sortie pendant la connexion"); }
        }
        public static void main(String args[])
            { clientbis test = new clientbis(); }
    }

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par SAKDOSS
    voiture V1 = new voiture(2,2,2,2,true);
    Je crois que je vais faire une dépression... les conventions de nommage en POO, c'est:
    - noms de classe débutant par une majuscule
    - noms d'attributs, d'objets... débutant par une minuscule

    Donc: Voiture v1 = new Voiture(2,2,2,2,true);

    Ca sera beaucoup mieux!

    Ensuite pour les objets serialisables, la javadoc t'aclairera sans doute plus:
    java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html

    En gros, une classe est serializable si tu peux le transformer tout objet de cette classe en un flot de données (Stream) qui le décrit parfaitement.
    "décrit parfaitement", ça veut dire qu'à partir de ce flot uniquement, tu es capable de reconstruire ton objet à l'identique.

    Pour schématiser, ta classe a deux méthode: une de "sauvegarde de l'objet", et une de "régénération de l'objet à partir de sa sauvegarde".

    En espérant que ça t'éclaire...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Citation Envoyé par SAKDOSS
    Ah effectivement la compilation marche ^^ merci !

    Par contre... à l'éxecution, j'ai une erreur d'entrée sortie quand le programme arrive au "try { voiture1... ".

    Si je supprime le try et tout ce qu'il contient, le programme se déroule normalement, il y a donc un problème d'entrée sortie à cet endroit :s

    Une tite idée d'où ça peut venir ? ^^
    Donne nos plus de code, sinon ça va être difficile de t'aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Envoi objet par mail " Alerte !"
    Par Pittouti dans le forum IHM
    Réponses: 3
    Dernier message: 05/07/2012, 10h36
  2. envoie d'objet en réseau
    Par demonia dans le forum C#
    Réponses: 4
    Dernier message: 18/07/2008, 20h24
  3. Réponses: 2
    Dernier message: 19/09/2007, 10h21
  4. [Socket] Envoi de texte et d'objets par socket
    Par ced dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 05/08/2004, 09h07
  5. Envoi de Datagrames par IP en JAVA
    Par the java lover dans le forum Développement
    Réponses: 2
    Dernier message: 14/08/2002, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo