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 :

Communiquer avec un deamon (socket/dbus/ou autre ?)


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut Communiquer avec un deamon (socket/dbus/ou autre ?)
    Bonjour,

    sous linux,

    j ai un deamon (qui fait sont petit travail quand il faut) qui tourne.
    Je voudrais lui ajouter un tache, mais en cas de requet.
    je voudrais que un utilisateur puisse envoyer une requet au demaon. Et que le deamon sache interpréter cette requet.

    Je suppose que par socket ca doit fonctionner, mais impose de laisser libre un port, de plus je ne sais pas faire de multi connection asyncrone en socket. donc si la connexion est déjà établie une autre connexion ne peux faire de requet.

    Je crois que dbus peut faire de tel chose (qt a quelque focntion) mais la c est encore pire je ne connait pas dutout.

    si quelqu un aurai un conseil ou un example je suis interessé.

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Je ne vois pas le problème avec le fait de devoir ouvrir un port ?

    Le protocole UDP semble parfaitement convenir à tes besoins du fait qu'il n'est pas connecté (un socket UDP peut recevoir des messages de n'importe où sans établir au préalable un handshake).

    Après, à toi de gérer les timeouts et la bonne réception des données s'ils sont cruciaux.

    Si tu ne veux pas t'occuper du timeout et de la bonne réception des packets, tu peux utiliser TCP de manière asynchrone. Il y a plein de tutos pour ça. (1 seul socket et un selector)

    Va voir du côté de boost::asio, ça simplifie grandement la vie.

  3. #3
    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 lezurp Voir le message
    Je suppose que par socket ca doit fonctionner
    Oui
    Citation Envoyé par lezurp Voir le message
    mais impose de laisser libre un port
    Pas forcémment mais c'est vrai que c'est plus facile d'avoir un port pour le fonctionnement normal du daemon (s'il en a besoin) et un port pour l'administration (les requêtes dont tu parles). En plus cela laisse la possibilité de binder le port de requêtes uniquement sur localhost ou alors de faire du filtrage applicatif/admlinistratif au niveau d'un firewall donc au niveau sécurité, c'est mieux.

    Citation Envoyé par lezurp Voir le message
    de plus je ne sais pas faire de multi connection asyncrone en socket
    Cette phrase veut dire qu'actuellement sur ta connexion tu ne sais gérer qu'une seule connexion active à la fois ?
    La gestion de plusieurs connexions simultanées demande un petit effort au niveau du code mais c'est faisable (regarde par exemple du côté de select())

    Citation Envoyé par lezurp Voir le message
    Je crois que dbus peut faire de tel chose (qt a quelque focntion) mais la c est encore pire je ne connait pas dutout.
    Je ne connais pas.

    Citation Envoyé par lezurp Voir le message
    si quelqu un aurai un conseil ou un example je suis interessé.
    Il y a d'autres possibilités, un pipe nommé, un événement lié à une mémoire partagée, mais c'est vrai que cela reste local à la machine, c'est à dire que tu ne pourras pas envoyer de requêtes d'administration depuis une autre machine. Sincèrement, le socket reste le plus souple.
    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
    .

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/12/2013, 10h26
  2. Choix d'un langage web pour communiquer avec d'autres langages
    Par hpavavar dans le forum Général Conception Web
    Réponses: 11
    Dernier message: 23/04/2007, 10h52
  3. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  4. Réponses: 3
    Dernier message: 16/06/2004, 11h26
  5. [TComport] communiquer avec un PIC
    Par tracks dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/06/2004, 13h11

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