DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
22 juil. 2005 à 10:15
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 2012
-
23 juil. 2005 à 23:23
Salut,
Je dispose d'une DLL et deux de EXE.
Ma DLL permet d'initialiser une connection TCP/IP sur le port 5678, et d'y envoyer des données.
Je lance une premiere fois mon EXE, qui charge et demande a la DLL d'envoyer des données.
La DLL se connecte automatiquement sur le port 5678 et envoie les données.
Je lance une deuxieme fois mon EXE, qui charge et demande a la DLL d'envoyer des données.
C'est la que se pose le problème.
La connection etant deja établi, la nouvelle instance de ma DLL ne peut pas se connecter et plante donc.
Ma question est de savoir comment faire pour utiliser une et une seule instance de ma DLL, qui gerega toutes les
demande de connexion des différente instance de mes EXE.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 22 juil. 2005 à 16:08
salut,
le plus simple est de creer une section partagee.
tu aurais bien deux instances de ta DLL mais tu pourras savoir ce que l'autre a déja fait.
#pragma data_seg("Shared")
bool tentative_de_connexion = false;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
tu testes si (!tentative_de_connexion) et tu le mets a true.
enfin a toi de raffiner ...
dans ta section shared la tu peux metre n'importe quelle variable
pourvue qu'elle soit initialisée dans la section (attention car sinon
elle ne sera pas partagée)
je suis pas sur par contre qu'il soit efficace de mettre qqc comme une section critique ..
cs_thierry la fronde
Messages postés351Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention12 août 2009 22 juil. 2005 à 15:45
Bonjour,
Il me semble, si je ne me trompe pas, que la DLL se décharge lorsque
que l'EXE se termine. Deux choses sont peut-être possible : Empêcher la
DLL de se décharger et créer une commande dans l'EXE pour fermer les
ports ouverts, ou (/et) tester si le port est ouvert (et
que c'est bien la DLL qu'il l'a ouvert) auquel cas on strap
l'ouverture.