[MFC]Serveur Multithread + CSocket: ASSERT dans sockcore.cpp
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
Code:
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);
} |
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]