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

Boost C++ Discussion :

Serialisation & Sockets


Sujet :

Boost C++

  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Par défaut Serialisation & Sockets
    Salut

    Dans le cadre de mon projet je doit transmettre des données via des sockets. Pour cela on m'a conseillé d'utiliser la serialisation des données.

    j'utilise la bibliothèque Boost.

    Tout marche bien au niveau du serveur mes données sont envoyées, mais niveau du client j'ai une erreur.

    Voici mon code:
    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
     
    #include <fstream>
     
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
     
    class Note
    {
    private:
            friend class boost::serialization::access;
     
            template<class Archive>
            void serialize(Archive & ar, const unsigned int version) {
                    ar & numerateur;
                    ar & denominateur;
            }
     
            int numerateur;
            int denominateur;
    public:
            Note() {};
            Note(int n, int d) :
                            numerateur(n), denominateur(d) {}
    };
     
     
    int main()
    {
    ......
    std::ofstream ofs("fichierDeSerialisation");
    const Note maNoteDePhysisque(20,20);
    {				              
    boost::archive::text_oarchive oa(ofs);
    oa << maNoteDePhysisque;
     
    // envoi de la structure 
    sock_err = send(Client,(char *)&oa, sizeof(oa), 0); 
     
    ...... 
     
    }
    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
    32
    33
    34
    35
    36
    37
    38
     
    #include <fstream>
     
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
     
    class Note
    {
    private:
            friend class boost::serialization::access;
     
            template<class Archive>
            void serialize(Archive & ar, const unsigned int version) {
                    ar & numerateur;
                    ar & denominateur;
            }
     
            int numerateur;
            int denominateur;
    public:
            Note() {};
            Note(int n, int d) :
                            numerateur(n), denominateur(d) {}
    };
     
    int main()
    {
    ......
     
    Note monAncienneNote;
    {
    /* Si l'on reçoit des informations : on les affiche à l'écran */
    recv(ClientSock,(char *)&monAncienneNote, sizeof(monAncienneNote), 0);
    std::ifstream ofs("fichierDeSerialisation");
    boost::archive::text_iarchive ia(ofs);
    ia >> monAncienneNote;
    .......
    }

    Erreur :

    Exception non gérée à 0x7c812aeb dans SOCKET_CLIENT.exe : Exception Microsoft C++ : boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::archive::archive_exception> > à l'emplacement mémoire 0x0012f7a0..

    Merci pour votre aide.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688

Discussions similaires

  1. Comment serialiser sur socket
    Par touftouf57 dans le forum C#
    Réponses: 13
    Dernier message: 31/10/2009, 19h10
  2. Serialisation objet dans socket
    Par george72 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/03/2009, 11h45
  3. [Serialisation]Transfert d'objet(s) par un socket
    Par Yan17 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 25/07/2007, 11h38
  4. Serialisation et socket
    Par asma nafti dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 29/05/2007, 09h30

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