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

Vue hybride

Kevgeii [MFC] CSocket et Thread 04/08/2005, 22h49
lenouvo tu a quel genre de plantage?... 05/08/2005, 11h03
Kevgeii Ok, J'utilise cette... 05/08/2005, 23h47
lenouvo essaye de placer ta commande... 08/08/2005, 11h31
Kevgeii Oui, J'ai fait l'essai,... 09/08/2005, 20h57
Madeiras Bonjour, Peux-tu également... 10/08/2005, 22h38
Message précédent Message précédent   Message suivant Message suivant
  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