Re: CAsyncSocket::DoCallBack(WPARA-M wParam, LPARAM lParam) crash
dindin wrote:
Hi
I start several threads to handle the incoming clients' connection requests,
there is an strange error occurs: when I debug the codes, I found that in
the thread, everything is OK, but there seems to be that the function "void
PASCAL CAsyncSocket::DoCallBack(WPARAM wParam, LPARAM lParam)"(start from
line 495 in "sockcore.cpp") is doing at the same time! I don't know what's
the usage of this function, but my program always failed in this
function(DoCallBack), in this part:
" pSocket = CAsyncSocket::LookupHandle((SOCKET)wParam, FALSE);
if (pSocket == NULL)
{
// Must be in the middle of an Accept call
pSocket = CAsyncSocket::LookupHandle(INVALID_SOCKET, FALSE);
ASSERT(pSocket != NULL);
pSocket->m_hSocket = (SOCKET)wParam;
CAsyncSocket::DetachHandle(INVALID_SOCKET, FALSE);
CAsyncSocket::AttachHandle(pSocket->m_hSocket, pSocket, FALSE);
}"
at the line: "ASSERT(pSocket != NULL);"(line 512).
I don't know what this error means, hope someone can help me.
Thanx a lot!!!
CAsyncSocket sends you notifications like OnConnect, OnReceive, etc.
This code is failing while trying to send you a notification, apparently
because the socket has not been properly created (or was created in a
different thread).
A couple of common mistakes that might cause this are: Make sure you are
using a class that you derive from CAsyncSocket; make sure your thread
is a user-interface type of thread (a class derived from CWinThread) not
a worker thread, and make sure you are accessing the socket from the
same thread where you created it. Also check the return values of all
socket calls.
Better yet, start with a working example from one of the CAsyncSocket
sample programs in the MSDN Knowledgebase.
--
Scott McPhillips [VC++ MVP]