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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
 
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.