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

C++ Discussion :

Posix Message Queue vs Win32 Named Pipe


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 38
    Points
    38
    Par défaut Posix Message Queue vs Win32 Named Pipe
    Bonjour,

    Je cherche à développer sous Windows un système d'IPC équivalent aux POSIX messages queues (afin que mon code soit portable facilement vers VxWorks). En fouillant un peu, je suis tombé sur MSMQ, qui permet d'implémenter des messages queues sous Windows. Par contre, l'API diffère complètement, et est relativement complexe. Je me demande donc si je ne ferais pas mieux d'implémenter des Named Pipe sous Windows, bien que la notion de "connect" et de stream byte au lieu de records me dérange un peu.

    Quelqu'un a-t'il déjà porté une message queue Posix sous Windows ?

    Cordialement,

    Julien.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 38
    Points
    38
    Par défaut
    Au passage, j'ai une question supplémentaire:

    J'ai un objet défini comme ci-dessous:

    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
     
    class DO
    {
      public:
        /*...*/
      private:
        char *Name;
        char *Ref;
        int Type;
        std::vector<DO *>SDOObjects;
        std::vector<DAObject> DAObjects;
        int Subs[16];
        bool IsConfigured;
    };
    }
    Si je souhaite transmettre cet objet par message queue, dois-je procéder à une sérialisation au préalable ? Il me semble que les messages queues sont utilisées pour transmettre des objets et non des bytes stream. Mais est-ce valable pour un objet aussi complexe ? Les vectors et les pointeurs risquent de poser problème je suppose.

    Cordialement,

    Julien.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Oui evidemment tu dois sérialiser ton objet avant de l'envoyer dans un pipe.
    Et comme tu dis, tout ce qui est pointeur, vecteurs va te poser un problème.

    Sous Windows, les Named Pipes peuvent être configurés en mode message plutôt que stream. Voir la doc de CreateNamedPipe, le paramètre dwPipeMode peut spécifier PIPE_TYPE_MESSAGE.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/12/2007, 13h25
  2. Message Queue loop et exécutable console
    Par mchk0123 dans le forum Windows
    Réponses: 8
    Dernier message: 18/05/2007, 17h25
  3. Portage de la message queue POSIX sous WINCE
    Par tonio35 dans le forum Windows
    Réponses: 2
    Dernier message: 14/02/2007, 14h51
  4. Les messages queues et l'embarqué
    Par fveysseire dans le forum C
    Réponses: 2
    Dernier message: 29/05/2006, 13h43
  5. Message Souris récente Win32
    Par black is beautiful dans le forum Windows
    Réponses: 3
    Dernier message: 11/01/2006, 22h51

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