请教:Socket编程的问题

testpwd testpwd 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个对话框界面的简单服务器程序,界面上有个“启动服务器”的按钮,其事件代码如下:

void CServerTestDlg::OnStart()
{
g_srvSocket.Create(6000);
if(g_srvSocket.Listen())
{
AfxMessageBox("服务器启动成功,开始监听客户请求!");
}
else
{
AfxMessageBox("服务器启动失败!");
return;
}
AfxBeginThread(ServerThreadFunc, 0);
}

g_srvSocket 是全局变量,ServerThreadFunc是全局函数,用于在新线程中处理到来的连接。

CSocket g_srvSocket;

UINT ServerThreadFunc(LPVOID pParam)
{
CSocket workSocket;
if(!g_srvSocket.Accept(workSocket))
{
AfxMessageBox("Accept出错");
return 1;
}
AfxBeginThread(ServerThreadFunc, pParam);//启动新线程监听

.....
}

但是执行到if(!g_srvSocket.Accept(workSocket))这句就出错了。

调试跟进去,发现是CSocket里面调用了一个PumpMessages函数,而PumpMessages中有句话

ASSERT(pState->m_hSocketWindow != NULL);

这个断言为假。

请问各位这是怎么回事呢?正确的应该如何写呢?
...全文

相关推荐

评论 14
收藏 已收藏
分享
返回顶部
testpwd
网络编程 18,356 成员 64,161 内容