DLL中SOCKET线程通信失败的问题(请高手指教,急!)
程序运行以后,AfxBeginThread函数不返回,而且也不能正常的通信。难道dll中不能这么用吗?请高手指教。
BOOL CDllserverApp::InitInstance()
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxBeginThread(ThreadProc,NULL);
AfxMessageBox("DllMain!");
return TRUE;
}
UINT ThreadProc(LPVOID pParam)
{
CSocket m_MyServer;
UINT UserPort;
UserPort=1088;
BOOL bFlag=m_MyServer.Create(UserPort,SOCK_STREAM);
if (!bFlag)
{
AfxMessageBox("Socket Error!");
m_MyServer.Close();
PostQuitMessage(0);
return 0;
}
if (!m_MyServer.Listen())
{
int nErrorCode = m_MyServer.GetLastError();
if (nErrorCode!=WSAEWOULDBLOCK)
{
AfxMessageBox("Socket Error!");
m_MyServer.Close();
PostQuitMessage(0);
return 0;
}
}
CSocket* pSocket = new CSocket();
if (m_MyServer.Accept(*pSocket))
{
char m_szBuffer[4096]="0";
int m_nLength;
while (m_szBuffer!="End")
{
m_nLength=pSocket->Receive(m_szBuffer,sizeof(m_szBuffer),0);
pSocket->Send(m_szBuffer,m_nLength,0);
}
}
else
delete pSocket;
return 0;
}