Communication entre application

Résolu
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 21 oct. 2010 à 22:05
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 22 oct. 2010 à 11:23
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 oct. 2010 à 23:15
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
3
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 1
21 oct. 2010 à 23:28
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
0
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 1
21 oct. 2010 à 23:36
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 )
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 oct. 2010 à 11:22
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 oct. 2010 à 11:23
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
0
Rejoignez-nous