Communication entre application [Résolu]

Signaler
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
-
Je fais un application sous plateforme linux. Je pense qu'à termes cette application sera lancé en tant que service.
J'aimerai pouvoir interagir avec cette application afin de connaître son status. Comment puis-je communiquer avec cette app?

Pour le moment je pense aux sockets mais j'aime pas trop cette solution. N'y aurait il pas un autre moyen en utilisant des pipes ou des messages systèmes?

Bonne prog!

5 réponses

Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
107
Pour dialoguer avec un service/démon le mieux reste d'utiliser du rpc. On peut aussi utiliser des pipes ou des sockets. A noter que les sockets sous Unix, ne désigne pas forcément du réseau, c'est juste un moyen de communication (on peut même créer des fichiers de pipe ou des fichiers de socket).

rpc (utilise des sockets):
- Avantages
..* Puissant
..* Fonctionne aussi si le service est sur une autre machine
- Désavantages
..* Pas de bon framework rpc existant en C++ (tout du moins à ma connaissance). Tu seras obligé d'en faire un, ce qui nécessitent pas mal de connaissances dans ce domaine. La sérialisation des objets peut se faire via "Google ProtoBuffer" (que je recommande vivement).

Socket
- Avantages:
..* Pas trop dur à mettre en place (socket local, voir ce qu'est un fichier socket, et: http://pwet.fr/man/linux/conventions/unix)
..* Pas grand chose à changer pour que cela marche aussi en réseau
- Désavantages:
..* Moins simple à mettre en oeuvre.

Pipe
- Avantages:
..* Très simple à mettre en place (http://www.lefinnois.net/artPROG/Pipes/tubes.php)
- Désavantage:
..* Ne fonctionne qu'en local

Peut être que d'autre auront de meilleurs solutions à te proposer, mais à mon sens tu devrait te tourner vers les tubes nommés (fichier pipe) si c'est un projet perso que tu veux finir vite, et vers les rpc si c'est un projet professionnel solide.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Génial ta réponse! Merci pour tous ces renseignements. Après mes recherches je pensais aussi me tourner vers les tubes nommés!
Le service est vraiment simple et je pense ne jamais avoir besoin de l'intéroger à distance.
(Et si jamais cela arrive, j'utiliserai une application tierce tel que PHP...)

Merci et bonne prog
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

En plus le tuto sur les tubes nommés est vraiment bien expliqué. Je me pause une question, les messages sont en mémoire, donc le content de se pipe se aussi grand que la mémoire disponible? Et si on dépasse cette mémoire alors il supprimera les données les plus anciennes? (enfin cela semble logique )
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
107
Je te cite du wikipédia :)

Sous Unix, le tube est implémenté grâce aux appels systèmes pipe(), fork() et exec(). Comme un processus peut envoyer des informations plus rapidement que le suivant ne peut les lire, il existe un buffer géré par le noyau et associé au tube. Lorsque le buffer est plein, le processus qui invoque l'appel write() est bloqué jusqu'à ce qu'un processus lise le contenu du buffer. Sous Linux la taille du buffer est 65536 octets.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
107
En gros, la mémoire ne vas pas exploser. L'application qui écrit va juste se mettre en attente, si les tubes sont pleins.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question