[MFC] Thread et CSocket::accept
Bonjour à tous,
Je me suis lancé dans un projet de programmation réseau avec MFC. En ce moment j'ai un problème avec la méthode CSocket::accept. Pour mon application serveur(CServeur) qui est un CDocument avec deux threads: un qui attend l'ajout de connection et les ajoutes à une liste de client, un autre qui parcours la liste des clients pour voir s'il n'y a pas des données à être lu et les diffuse sur les autre clients
Le problème se situe dans un assert du fichier sockcore.cpp, c'est la méthode accept. Mon code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
UINT runAddConnection(LPVOID pParam) {
CServeur *serveur = (CServeur *)pParam;
while (serveur->isStarted()) {
CSocket client;
if (serveur->getServerSocket().accept(client)!=0) {
serveur->addConnection(client);
}
::Sleep(1000);
}
return 0;
} |
Ma classe ressemble à ça:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
class CServeur : public CDocument {
public
CServeur(int port);
~CServeur();
void start();
void stop();
boolean restart(int port);
boolean isStarted();
int getPort();
void setPort(int value);
CSocket & getServerSocket();
private:
int port;
boolean started;
CSocket serverSocket;
CWinThread *threadConnection;
CWinThread *threadEcoute;
} |
Voilà, en gros le socket est créer et détruit normalement, le socket est mis en écoute correctement avec CSocket::listen, mais la méthode CSocket::accept fais une erreur assertion. Merci d'avance.