DLL中SOCKET线程通信失败的问题(请高手指教,急!)

luckyghl 2003-10-16 05:01:46
程序运行以后,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;
}
...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyghl 2003-10-16
  • 打赏
  • 举报
回复
上面的问题解决了,用_beginthread替换afxbeginthread就可以了,但是在运行到BOOL bFlag=m_MyServer.Create(UserPort,SOCK_STREAM); 就会报错说指令读"0x00000004"该内存不能read.
望指教!
luckyghl 2003-10-16
  • 打赏
  • 举报
回复
我试了一下,好像和网络无关。是dll创建线程本身的问题,我是用mfc创建的正规dll。请各位指教。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧