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 :

Socket avec AsyncSock, perte de variable :(


Sujet :

MFC

  1. #1
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut Socket avec AsyncSock, perte de variable :(
    Bonjour tout le monde !


    Apr�s plus de 6h de d�buggage pour quelquechose d'incompr�hensible, je viens demander votre avis.
    Je developpe une MFC, avec socket ( utilisant AsyncSock)

    Ma partie client serveur fonctionne sans aucun probl�me.

    J'ai cr�er donc une classe CSocketServeur h�rit�e de CAsynsock.
    Dans cette classe j'y ai cr�er une donn�e membre m_nStatut (un int)

    Je fixe m_nStatut � 0 si le serveur n'est pas d�marr�
    � 1 si le serveur est d�marr� ( en �coute)
    � 2 si le serveur a un client de connect�

    Ainsi je fixe m_nStatut dans mon code.
    ( j'ai cr�er une m�thode SetStatut(int statut) et une m�thode int GetStatut() )

    J'ai mis sur ma MFC un timer, afin de v�rifier toutes les 2 secondes, l'�tat de mon serveur � l'aide de GetStatut()

    Un petit switch case, je teste la valeur retourn�e par GetStatut, et hop, j'y affiche un joli BMP afin de visualiser l'�tat du serveur.

    Tous fonctionne pour l'�tat 0, et 1 ( Non d�marr�, et en �coute).
    J'ai donc d�bugg� pour voir ou la faille se trouve.
    Quand un client se connecte, je passe bien dans mon CSocketServeur::OnAccept()
    et je fixe bien dans cette m�thode m_nStatut � 2 ( v�rifi� au Debuggeur ! )

    Quand le d�bugger sors de la m�thode CSocketServeur::OnAccept, ma variable m_nStatut se retrouve � sa valeur pr�c�dente.

    Mon code est de plus CLEAN car c'est un projet perso pour mes cours !

    Plus de 6 h de debug, je deviens fou !

    Quelqu'un connais ce genre de probl�me?
    MERCI vraiment � tout le monde !!!

    Bonne journ�e

  2. #2
    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
    Par d�faut
    salut,
    a mon avis il est possible que ce ne soit pas le meme objet socket ...
    dans le debugger regarde l'adresse de l'objet socket quand tu fixes la variable
    et quand tu la lis ..
    c'est la m�me adresse (valeur de this).?

  3. #3
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    EN r�alit�, j'ai d�ja pens� a cet erreure potentiel, donc pour ce faire, au lieu de d�bugg�, j'ai �ssay�, pour fixer mon m_nStatut � 2, de faire : (dans le OnAccept)

    m_nStatut=2 et �galement this->SetStatut(2)

    Ces deux m�thodes ne changent aparemment rien

    Tous mes debug me montrent que dans le OnAccept, la variable se fixe bien a 2 mais que quand on sors du OnAccept, elle est remise a sa valeur pr�c�dent ( si elle avais une valeur pr�c�dente), sinon, elle est mise a 14252562 ( une valeur du genre )

  4. #4
    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
    Par d�faut
    Citation Envoy� par Nixeus
    EN r�alit�, j'ai d�ja pens� a cet erreure potentiel, donc pour ce faire, au lieu de d�bugg�, j'ai �ssay�, pour fixer mon m_nStatut � 2, de faire : (dans le OnAccept)

    m_nStatut=2 et �galement this->SetStatut(2)

    Ces deux m�thodes ne changent aparemment rien

    Tous mes debug me montrent que dans le OnAccept, la variable se fixe bien a 2 mais que quand on sors du OnAccept, elle est remise a sa valeur pr�c�dent ( si elle avais une valeur pr�c�dente), sinon, elle est mise a 14252562 ( une valeur du genre )
    mais tu ne v�rifies pas ma supposition...
    la derni�re valeur correspond soit a un d�bordement m�moire soit vraiment parce que c'est un autre objet, surtout si cette variable n'est pas initialis�e dans le constructeur...
    c'est le cas ?

  5. #5
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    Oui, tu as raison,


    J'initialise ma variable m_nStatut � 0 dans mon constructeur ( 0= Serveur non d�marrer).

    Si je lance mon serveur, (d�marrage de l'�coute), la variable passe a 1 et y reste.

    Quand un client se connecte, elle passe a 2 dans le OnAccept,et a la sortie du OnAccept, elle repasse a sa valeur "pr�c�dente" donc 1 si javais d�marr� le serveur, 0 si je n'avais pas d�marr� le serveur, et une valeur du genre 142542792 si je n'initialise pas cette variable dans mon constructeur.

  6. #6
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    J'ai du nouveau !!!!
    Grace � Seandest, merci !!

    En fait, quand un client viens se connecter, le serveur se remetrais tout de suite en �coute, c'est pour ca que ma variable change de valeur !

    DONC, DEUX solutions s'offrent � moi, la premiere serai de "forcer" mon serveur en MONO CLIENT, ce qui n'ai absolument pas g�nant car 1 seul client s'y connectera, mais je ne sais pas comment faire pour le forcer en mono client !

    Deuxieme solution, le laisser en multiclient, et dans ce cas trouver, pour que ma variable ne soit pas remodifi� lorsqu'un elle se Re-met en �coute, et lorsque mon client est connect� !

    Savez vous comment faire ? Merci

  7. #7
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut


    Bon, encore du new, quoique je fasse, le serveur sera toujours en "attente" ( ce qui est normal ), ainsi je tout recommenc� en passant par un tableau de boolean avec :

    indice 0--->serveur d�marr�, true, sinon false
    indice 1----> serveur en �coute, true sinon false
    indice 2----> client connect�, true, sinon false

    Je fixe donc indice 2 a true dans mon OnAccept, donc quand un client se connecte, cette variable se fixe bien
    mais a la sortie, elle repasse ( JE NE SAIS PAS PKOI, A FALSE )

    Donc mon petit switch case qui va tester mes �tats de mon serveur, ne rentre pas dans cette condition !!

    J'ai donc ensuite, cr�e, afin de "pousser" le vice, une variable bool�en pour le statut de "client connect�, si ell est a true, un client est connect�, sinon NON.

    JE NE MANIPULE CETTE VARIABLE QU'UNE SEULE ET UNIQUE FOIS, soit dan le OnAccept, je la passe a true.

    JE teste ensuite si cette variable est a true, et NON !Meme probl�me, elle passe bien a true dans OnAccept, et ensuite, plus rien.

    Ca fais quand meme 4jours de d�buggage la
    J'en peux plus!!

  8. #8
    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
    Par d�faut
    salut,
    sans code r�duit des diff�rentes classes en jeux on ne peut rien dire de plus..

  9. #9
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    Voici alors le rar de mon projet, merci vraiment pour celui qui y jetera un oeil

    D�passant les 512KO ( 1,9MO en ayant supprim�s les .obj...)je vous donne un lien vers un de mes serveurs

    http://transfairre.free.fr/Manager_C...M_VARIABLE.rar

  10. #10
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    D�sol�, mon fichier rar avait mal �t� upload� et �tait corrompu, je viens de mettre tout ca a jour, le fichier est donc int�gral cette fois ci !

    Merci a tous !

    http://transfairre.free.fr/Manager_C...M_VARIABLE.rar

  11. #11
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    281
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par d�faut
    ALors pour news, donc mon OnReceive, je fixe dans ma donn�e memebre m_strMessage le message recu, et idem que dans OnAccept, a la sortie de OnReceive, la variabl est �cras� !!

    Pblm avec CAsynsock ?

Discussions similaires

  1. [Toutes versions] Interaction avec Internet Explorer --> perte de variable IE
    Par damsmut dans le forum Microsoft Office
    R�ponses: 0
    Dernier message: 26/01/2014, 16h13
  2. Perte de variables de session avec lien href
    Par didjac dans le forum Langage
    R�ponses: 2
    Dernier message: 21/02/2009, 16h12
  3. Perte de variables session avec IE6.0.28
    Par tom42 dans le forum Langage
    R�ponses: 1
    Dernier message: 12/03/2007, 17h43
  4. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    R�ponses: 5
    Dernier message: 17/05/2005, 14h24
  5. Erreur de socket avec le composant Indy idHTTP
    Par Etanne dans le forum C++Builder
    R�ponses: 3
    Dernier message: 25/10/2004, 11h27

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