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:
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 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; }
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.
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; }
Partager