在线程中使用CSOCKET的问题?
打开接受主线程:
接受第一个接入的线程一切OK,当有第二个线程接入时,出现断言错误:
Debug Assertion Failed!
programe c:\Server.exe
File : Sockcore.cpp
line:407
若忽略错误,能接受到接入的客户端,并能接受数据.
跟踪调试时:
错误定位在: ASSERT(CAsyncSocket::LookupHandle(hSocket, bDead) == NULL);
请问以下代码有何问题,同时请教如何终止指定的接受线程?
接受主线程
if (g_sSocket.Create(9990) == SOCKET_ERROR)
{
AfxMessageBox("监控服务初始化失败!",MB_OK);
return 0;
}
if (g_sSocket.Listen() == SOCKET_ERROR)
{
AfxMessageBox("监控服务监听失败!",MB_OK);
return 0;
}
while (bRunFlag)
{
CClientSocket *pSocket = new CClientSocket;
if (!g_sSocket.Accept(*pSocket))
{
AfxMessageBox("接受客户端连接失败!",MB_OK);
delete pSocket;
return 0;
}
else
AfxBeginThread(Connect,(LPVOID)pSocket->m_hSocket);
}
新建立的接受线程
UINT Connect(LPVOID lPvoid)
{
SOCKET hSocket=(SOCKET) lPvoid;
CSocket *pSocket = new CSocket;
//AfxMessageBox("接受成功");
pSocket->Attach(hSocket);
char lpCmdBuf[20];
if (pSocket->Receive(lpCmdBuf,sizeof(lpCmdBuf)) == 20 )
AfxMessageBox(lpCmdBuf);
pSocket->Close();
delete pSocket;
return 0;
}