IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[sockets] pb de messages si appli non mfc avec dll mfc


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [sockets] pb de messages si appli non mfc avec dll mfc
    Salut à tous,
    Voila, j'ai un gros os sur lequel je suis depuis un moment et impossible de trouver une réponse !
    Je bosse acutellement sur une appli, qui pour des raisons de "multi-plateforme" a été developpée sans MFC.
    Dans cette appli j'ai besoin de créer et d'utiliser une socket via une DLL MFC. J'ai donc importé la DLL dans mon projet et créer une Csocket => jusque là pas de pb ! Mais voila le soucis :
    Lorsque la socket est sollicité par le client, aucun evenement ne parvient à la methode "OnReveive" du fait , je pense, que le thread de depart n'est pas un thread de type afxmain !
    On m'a dit qu'il était possible de contourner le pb en passant par une pompe à message ... en creant une windows ...
    mais je ne sais absolument pas comment faire !
    Je m'en remets donc à vous tous !!
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Eh bien, l'équivalent des CAsyncSocket avec l'API Win32, c'est la fonction WSAAsyncSelect().
    Mais j'ignore s'il y a moyen d'interfacer correctement pour faire marcher des CAsyncSocket (et à fortiori des CSocket) dans un thread normal...
    Il faudrait se plonger dans les sources de MFC (heureusement disponibles) pour cela...

    PS: WSAAsyncSelect() est tout sauf multiplateforme.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut Re: [sockets] pb de messages si appli non mfc avec dll mfc
    Citation Envoyé par jeppy
    [...] Je bosse acutellement sur une appli, qui pour des raisons de "multi-plateforme" a été developpée sans MFC.
    Dans cette appli j'ai besoin de créer et d'utiliser une socket via une DLL MFC. [...]
    Je vois comme une contradiction, là... A moins que la politique concernant le développement de cette aplication ait changé... Sinon, si elle doit être multi-plateformes, alors mieux vaut éviter de créer/utiliser une socket via MFC.
    Pourquoi pas une socket "classique" et select() ?

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je vous accorde qu'il y a carrement contradiction. Le pb est que je dois malheureusement faire avec. En fait comme le dit David, la politique de developpement a effectivement changée ! Je me retrouve donc avec une appli non MFC qui doit absolument, pour cause de manque de temps, utiliser les sockets via une DLL deja codée en MFC. Des idees ? Et cette pompe à message, çà vous dit quelque chose ?

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par jeppy
    [...]Des idees ? Et cette pompe à message, çà vous dit quelque chose ?
    Euh... Moi non, désolé : je n'y connais rien aux MFC (je suis plutôt linuxien à la base, alors imaginez...).

    Une piste peut-être : http://www.gamedev.net/community/forums/topic.asp?topic_id=311841 ??? Ou là http://www.michaelmoser.org/tip3b.htm ??? (j'ai à peine parcouru les deux, donc je ne garantis rien)

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    pour utiliser les sockets MFC il faut les initialiser :
    je pense qu'il faut aussi initialiser les MFC .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	// initialize MFC and print and error on failure
    	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    	{
    // erreur
    }

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Resalut,
    Tout d'abord merci à tous pour votre contribution.
    J'ai finalement la solution à mon pb de socket. Voilà ce que j'ai fait :
    - Création d'un nouveau thread non MFC qui effectue la creation de la socket via la DLL MFC
    - Mise en place d'une pompe à message depuis ce thread pour chopper les notifs windows à destination de ma socket :

    MSG msg;
    PeekMessage(&msg,NULL,0,0,PM_REMOVE);
    TranslateMessage(&msg);
    DispatchMessage(&msg);

    Voilou

Discussions similaires

  1. forum : gérer les messages lus et non lus avec un cookie
    Par elcoyotos dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2014, 14h30
  2. Utilisation d'une DLL MFC avec Express
    Par CoRfr dans le forum MFC
    Réponses: 4
    Dernier message: 06/07/2011, 15h38
  3. Démarrer avec les MFC avec Visual studio 2005 (Volume 2) introuvable
    Par simonphenix dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 21/05/2008, 19h01
  4. Problème de liaison C++/CLI avec DLL MFC
    Par skeltryx dans le forum C++/CLI
    Réponses: 10
    Dernier message: 27/04/2007, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo