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 :

Passage d'information entre deux programmes


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Passage d'information entre deux programmes
    Bonjour à tous,
    J'ai réalisé une application en C++ qui est un agent SNMP.
    Cette agent contient une MIB. Cette MIB est mis à jour par un programme WinDev.
    Ma solution pour faire passé les valeurs d'un programme a l'autre a été de réalisé une zone de mémoire partagé entre les deux processus. Pars contre j'ai beaucoup de CreateFileMapping, un pour chaque variable (deux types de variable: UINT et CHAR*).
    Cela fonctionne très bien. Je voulais savoir si on pouvait faire mieux au niveau des CreateFileMapping.
    Ou bien il aurait été plus propre de créer un client/serveur sur socket?

    J'espère avoir été clairs dans mes explications.
    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Bonjour,

    J'ai un peu de mal avec l'API Windows, donc je n'ai pas compris grand chose à ce que tu as écrit. Par contre, puisque tu n'as eu aucune réponse, j'ai pensé que cette bibliothèque pourrait t'aider : http://www.boost.org/doc/libs/1_36_0...erprocess.html

    En plus, ce sera portable !
    Utiliser directement l'API d'un OS pour des choses si génériques, ça devrait être interdit…
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Moi, j'aurais utilisé l'API des "Performance Counter"
    C'est plus ou moins simple,
    Performant
    Cela s'intègre avec les plateformes d'administration
    WMI Aware ;-)

  4. #4
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Salut,

    L'utilisation de memoire partager avec Windows est tout a fais correcte. Par contre pour ma part je l'utiliserai qu'une seul fois pour partage une interface entre mes deux applications. Apres il est aussi possible d'utiliser une communication par les sockets, qui a surtout le merite de fonctionner de la meme façcon sur un meme PC ou sur 2, mais en contre partie a des performances plus faible, et complique aussi le code. Mais il existe deja de l'existant pour patager des objets entre applications ( COM/DCOM CORBA ou Web Service ). Choisi en fonction des avantages et de la complexité que le systeme impose, ou alors pour apprendre des nouvelles technologie.
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par CTotophe85 Voir le message
    Pars contre j'ai beaucoup de CreateFileMapping, un pour chaque variable (deux types de variable: UINT et CHAR*).
    Une mémoire partagée par variable ?!? C'est pas un peu coûteux comme méthode ?

    Pourquoi pas une structure de variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct blabla_t
    {
       int var1;    // oid 1.2.3.4.5.6
       char var_2[5];   // oid ...
       ...
    }
    mappée dans une seule mémoire partagée
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    A partir du moment où tu as déjà implémenté un mécanisme de mémoire partagé, garde-le mais passe toutes tes variables dedans en te définissant un format de message. Un peu comme tu le ferais pour envoyer les données par réseaux, sauf que ton transport sera la mémoire partagée.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    J'insiste sur le fait que SNMP est fait pour du monitoring et que les compteurs de performances sont aussi là pour le monitoring.

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Sinon tu peux aussi faire un named fifo
    Boost ftw

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Une mémoire partagée par variable ?!? C'est pas un peu coûteux comme méthode ?

    Pourquoi pas une structure de variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct blabla_t
    {
       int var1;    // oid 1.2.3.4.5.6
       char var_2[5];   // oid ...
       ...
    }
    mappée dans une seule mémoire partagée
    Merci pour toutes vos réponses, mais je pense que l'utilisation de mémoires partagé étaient mieux que les socket car les deux programmes sont toujours sur le même PC. Mais il vrai que je n'ai pas pensé au structure...

    Après si quelqu'un a d'autre alternative, je suis toujours preneurs. Le projet est terminé mais cela me servira pour le futur.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2011, 01h59
  2. passage d'information entre deux pages
    Par hamham dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 30/01/2007, 16h36
  3. Réponses: 2
    Dernier message: 09/06/2006, 19h34
  4. Passage d'information entre deux fenêtres
    Par kuuya dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2005, 14h35
  5. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14

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