Dialogue entre programmes sur un méme Pc

Résolu
cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 - 2 mai 2007 à 14:01
cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 - 5 mai 2007 à 17:15
Bonjour,

je voudrais savoir comment on fait pour envoyer une donnée d'un programme à un autre. Sachant que les deux programmes tournent sur la même machine. Comme un dialogue, entre deux programmes. (Je ne parle pas d'intranet, mais "d'intraPC" )

Je sais que sa existe, (windows l'utilise) mais je sais pas comment faire, sans utiliser une fichier texte ou une base de donnée.

Merci, d'avance.

5 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
2 mai 2007 à 15:50
Salut,
Je suis pas hyper-calé, mais je me rappelle que la question était déjà venue il y a un bout de temps et que Casy avait donné 3 pistes :

1) Le plus simple à mon goût, mais peut-être pas le plus efficace : Simplement par le réseau, tu utilises des sockets à l'adresse LocalHost sur le port de ton choix et ça ira très bien. Peut paraitre un peu étrange, mais est souvent utilisé en fin de compte...

2) Les Named Pipes, je n'ai jamais utilisé, donc je te redirige sur wikipedia.

3) Casy avait enfin parlé d'une manière de partager une zone mémoire entre différents processus, mais je ne me rappelle vraiment plus de rien à ce sujet en fait ^^...

Casy si tu passe par ici tu nous donne des nouvelles ?

<hr size="2" width="100%" />Julien.
3
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
2 mai 2007 à 15:56
Trois liens un peu plus utiles pour les Named Pipes :
Une source de vbfrance
La doc msdn
Un autre exemple

<hr size="2" width="100%" />Julien.
0
cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 3
2 mai 2007 à 16:56
Grand merci, je vais pouvoir faire des recherches sur ce que tu m'a donnée. ( En plus je manquais de vocabulaire pour ciblé mes recherches.)

Je vais aussi chercher les sources de Casy, je pense que sa pourrait aussi m'aider.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mai 2007 à 17:57
Alors effectivement il existe plusieurs solutions pour faire dialoguer 2 logiciels ensembles, fichiers, liens DDE, NamedPipes, liens TCP, mémoire partagée, et bien d'autres je pense...

Pour la mémoire partagée, cela consiste à déclarer une zone mémoire commune à 2 ou plusieurs applications. C'est relativement lourd à mettre en place, necessite généralement en plus du partage de données un système de synchronisation. Cela doit etre réserver je pense pour des cas vraiment bien spécifiques. Personellement je l'avais mis en place pour des logiciels composés d'une interface graphique sous Windows et d'un noyau tournant hors environnement Windows. C'était donc le seul moyen qu'il m'était donné de dialoguer avec mon noyau.

Pour ce qui est des NamedPipes, en schématisant à l'excès, c'est comme si tu créais un fichier sans fond en mémoire, tout ce qu'un soft écrit d'un coté, l'autre soft peut le lire de l'autre et inverssement. En gros, tu implante un tuyau (pipes en anglais) entre 2 logiciels.
Pourquoi pas.

Méthode similaire mais que tu connais mieux est le lien TCP. Comme internet, c'est la même chose. Sauf qu'ici ça marche en local, le serveur et le client étant sur la même machine. Le serveur écoute (comme un site internet), le client vient se connecté (comme toi avec ton navigateur). L'analogie avec internet s'arrete là, si pour internet les échanges se basent sur le protocole http, ici c'est à toi de t'inventer ton propre protocole.
Cette solution risque éventuellement de titiller un peu le Firewall suivant la config, il suffit d'autoriser les échanges.

Le plus simple à mettre en oeuvre pour de petits échanges étant le fichier, suivie ensuite du lien TCP ou éventuellement du NamedPipes si tu souhaite t'y plonger dedans. Pour les autres solutions, tu peux éventuellement faire des recherche sur les liens DDE si tu le souhaite, sinon elles peuvent etre laissé de coté je pense.

PS : D'aucuns te parlerons peut-etre d'une solution par la base de registre. Je l'ai volontairement passée sous silence. La BDR étant le coeur du système Windows, moins j'ai à y toucher mieux je me porte.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 3
5 mai 2007 à 17:15
J'ai commencer par faire des recherches sur les Namedpipes. Je suis tomber que sur le site de Microsoft. J'ai essayer, mais sa marche pas.

 | Il faut créé un serveur (canal) sur le PC. Donc je me rend dans la base de registre:
 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\
 | J'ai créé des clé, des chaines ...
 | J'ai recopié ensuite le code dans VB. Je l'execute, et une erreur:
 | "Error number 2 attemptting to call CallNamedPipe"
 | Je modifie un peu ce que j'ai fait dans la base de registre, toujours la meme erreur.
 | Je supprime tous ce que j'ai fait dans la base, et toujours la meme erreur.
 | Aucun succes avec sa.

Je me suis interresser ensuite à la mémoire virtuelle.

 | J'ai trouver sa sur vbfance en plus. http://www.vbfrance.com/codes/CLASSE-POUR-LIRE-MODIFIER-MEMOIRE-IMPORTE-QUEL-PROCESSUS_40724.aspx
 | Marche tres bien, et c'est bien expliquer en plus.
 | Enfin je comprend pas tous mais j'etudi.

Un petit detail sur la mémoire virtuelle:
La mémoire virtuelle est un espace ou toutes les données du processu y sont stockés. Donc le seul truc que l'on peu faire, c'est de modifier un morceau de cette donnée a l'aide d'un programme quelconque. (La valeur d'un textbox par exemple)

J'ai trouvé ce que je cherchais.
Je vous remerci de vos réponces.
0
Rejoignez-nous