Dll

Résolu
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 22 juil. 2005 à 10:15
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 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.

Shell

3 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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 ..



a+
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
23 juil. 2005 à 23:23
Salut,

Pourquoi ta dll ne peut pas se connecter et plante ? je vois pas ou est le probleme.

Peut etre que tu souhaites utiliser une seule connexion pour toutes les instances de tes exe ? WSADuplicateSocket() dans ce cas.
3
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 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.


thierry la fronde
0
Rejoignez-nous