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 :

[MFC] CSocket et Thread


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 92
    Par d�faut [MFC] CSocket et Thread
    Bonjour,

    Je rencontre de probl�mes ("plantage") quand j'utilise des fonctions Send et Receive d'une classe CSocket dans un thread?

    Les m�mes fonctions utilis�es sans thread fonctions alors que si elles sont applel� par un thread elles me plante l'application ???

    Y a t il des incopatibilit� ou des flags sp�cifique pour combiner thread et Socket ?

  2. #2
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    tu a quel genre de plantage?
    sinon essaye de nous montrer un exemple de ton code

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 92
    Par d�faut
    Ok,

    J'utilise cette fonction, dans une classe qui d�rive de CSocket

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    BOOL C_Ma_Socket::SendCmd(CString strCmd, CString *strAnswer)
    {
    	BOOL bOut = 0;
    	int sckError = 0;
    	int nbrBoucle = 0;
     
    	//Envoie de la commande
    	sckError = this->Send(LPCTSTR(strCmd),strCmd.GetLength()+1, 0);
    	if(sckError != SOCKET_ERROR)
    	{
    		//Création d'un buffer pour lire la réponse
    		char * pBuf = new char[4096];
    		memset(pBuf, 0, 4096);
     
    		sckError = this->Receive(pBuf, 4096, 0);
    		if(sckError != SOCKET_ERROR)
    		{
    			strAnswer->Format("%s", pBuf);
    			bOut = 1;
    		}
     
    		//Libération de la mémoire du buffer pour la réponse
    		delete(pBuf);
    	}
     
    	return bOut;
    }
    Si j'appel cette fonction a partir d'un simple boutton, tous se passe bien, envoie d'une commande et l�cture d'une r�ponse.

    Par contre si j'appel cette fonction a partir d'un thread alors l'application se plante au niveau de la premi�re lecture.

    J'ai alors tanter d'envoyer plusieur fois la fonction (SendCmd(..)) en dehors d'un thread et la tous fonctionne normalement.

    C'est donc la combinaison du thread et de ma classe CSocket qui pose probl�me!?

  4. #4
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    essaye de placer ta commande dans une boucle sinon pour "remplacer" ton thread et voir si ca marche

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 92
    Par d�faut
    Oui,

    J'ai fait l'essai, si mon code est appel� en boucle dans une fonction normale (par exemple un boutton) tous se passe bien!

    C'est vraiment la combinaison de CSocket et de thread.....

    Le probl�me � l'air d'�tre connu mais je ne parvient pas � le r�soudre.

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Par d�faut
    Bonjour,

    Peux-tu �galement mettre un extrait de tes codes qui illustrent:

    - La cr�ation du thread
    - La fonction de type ThreadProc dans laquelle tu utilises ta socket

    ?

    Merci

Discussions similaires

  1. [MFC] CSocket et thread
    Par ricky78 dans le forum MFC
    R�ponses: 7
    Dernier message: 28/05/2008, 14h20
  2. [MFC] Probl�me de Threads + Timers
    Par Invit� dans le forum MFC
    R�ponses: 8
    Dernier message: 30/11/2005, 10h51
  3. [MFC] CSocket | perte de donn�es
    Par Grey dans le forum MFC
    R�ponses: 2
    Dernier message: 24/11/2005, 10h14
  4. [MFC] CMAP non thread safe ?
    Par fmarot dans le forum MFC
    R�ponses: 5
    Dernier message: 04/10/2005, 13h21
  5. [MFC] CSocket ... probl�me � la fermeture
    Par Yellowmat dans le forum MFC
    R�ponses: 7
    Dernier message: 29/04/2005, 15h37

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