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

API standards et tierces Android Discussion :

Serialisation d'objet et envoie par socket


Sujet :

API standards et tierces Android

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut Serialisation d'objet et envoie par socket
    Bonjour,

    Pour mon application je dois envoyer un objet par le biais d'une socket, pour cela je le serialise. Mon objet semble bien partir (pas d'erreur du coté du client android) cependant a la réception sur le serveur (Java sur pc) j'ai l'erreur "invalid type code: 00". Je ne trouve pas grand chose comme info sur celle ci. A par que ce serait un problème lié a la sérialisation. Avec un code identique du client sur le pc (java) je n'ai aucun soucis. Pourriez vous m'aiguiller et me dire ce qui cloche ?

    L'asyncTask qui envoie
    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
    public class Client extends AsyncTask<Void,Void,Void>{
     
            @Override
            protected Void doInBackground(Void... params) {
                try {
                    PositionGps pos2 = new PositionGps();
                    InetAddress serverAddr = InetAddress.getByName("192.168.2.16");
                    String msg = text.getText().toString();
                    clientSocket = new Socket(serverAddr, 4444);
                    ObjectOutputStream oos = new ObjectOutputStream(clientSocket.getOutputStream());
                    oos.writeObject(pos2);
                    oos.flush();
                    //oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
     
                return null;
            }
        }
    Ma classe serialisé:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public class PositionGps implements Serializable{
        public static final long serialVersionUID = 0xBADA55;
        private double latitude;
        private double longitude;
     
        public PositionGps(/*long lat, long longi*/){
            //this.latitude = lat;
            //this.longitude = longi;
        }
        private void writeObject(ObjectOutputStream out){
            try {
                this.setLongitude(10000);
                this.setLatitude(25000);
                out.writeDouble(this.getLatitude());
                out.writeDouble(this.getLongitude());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        private void readObject(ObjectInputStream in){
            try {
                this.setLatitude(in.readDouble());
                this.setLongitude(in.readDouble());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public double getLatitude(){
            return this.latitude;
        }
        public void setLatitude(double latitude){
            this.latitude = latitude;
        }
     
        public double getLongitude(){
            return longitude;
        }
        public void setLongitude(double longi){
            this.longitude = longi;
        }
    }
    Classe serveur:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Socket client = null;
    ServerSocket server= null;
    PositionGps pos = null;
    try{
        server = new ServerSocket(4444);
        System.out.println("Server Started...");
        //client = server.accept();
    }catch(Exception e){
     
    }
    try {
     
        while(true){
            client = server.accept();
     
            //in = new BufferedReader(new InputStreamReader(client.getInputStream()));
            ObjectInputStream in1= new ObjectInputStream(client.getInputStream());
            //String distant = in.readLine();
            try{
            pos = (PositionGps)in1.readObject();
            }catch(StreamCorruptedException e){
                System.out.println(e);
            }
            System.out.println("latitude:"+pos.getLatitude());
            System.out.println("longitude: "+pos.getLongitude());
     
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally{
        try {
            client.close();
            server.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     
    }
    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    J'ai plus mon erreur, coté client, enfin j'en ai une autre. Mon objet est null apparemment. Et coté client j'ai:
    java.net.SocketException: sendto failed: EPIPE (Broken pipe).

    Si quelqu'un a deja eu ce probleme ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    en fait c est revenue

Discussions similaires

  1. Sérialisation d'objet et envoi par le réseau
    Par MagicTux dans le forum Langage
    Réponses: 7
    Dernier message: 03/04/2011, 18h18
  2. Serialisation d'objet pour envoie par UDP
    Par olator dans le forum MFC
    Réponses: 3
    Dernier message: 07/11/2008, 19h11
  3. Ouverture de connexion et envoi d'un message par socket
    Par loleske dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/02/2005, 12h52
  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. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 18h58

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