Voila je d�veloppe un petit serveur sous visual, le principe est simple:
J'ai un CSocket "listener" qui �coute un port fixe auquel les clients se connectent.
Quand ils se connectent (message OnAccept), je cr�e un nouveau CSocket, je l'active avec le pr�c�dent et je le d�tache du thread courant. Je cr�e alors un nouveau thread dans lequel j'attache ce CSocket, et dans lequel je capture les �v�nements du client, ce qui donne
C'est volontairement tr�s simplifi�... Donc PAS TOUT LE TEMPS (et c'est bien le probl�me) j'ai une assertion dans sockcore.cpp, dans la m�thode DoCallBack(). Pas mal de monde a eu ce probl�me (voir sur CodeGuru et autre) et personne n'arrive � le r�soudre. J'ai entendu parler d'une histoire de pompe d'�x�cution qui ne s'arr�terait pas, enfin c'est pas de mon niveau. Help.[/code]
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 void OnAccept() { CSocket* sock = new CSocket; Listener.accept(CSocket); SOCKET SocketHandle = sock.detach(); AfxBeginThread(MethodeThread, SocketHandle); } UINT MethodeThread(LPVOID pParam) { CSocket* sock = new CSocket; SOCKET* hsock = static_cast<SOCKET*>(pParam) sock.attach(hsock); }
Partager