mfc下socket服务器端界面假死如何解决

lanse20_2008 2015-05-24 01:49:05
菜鸟一枚,mfc用socket编程实现服务器与客户端的通信,在写服务器端程序时候,从网上找了下面的程序来抄。但是运行的时候,却发现程序界面假死的状态,单步调试之后,发现是while(!flag_z)这里程序出不来,一直在循环。
想问下这样的假死界面情况,如何解决??
是不是可以在监听和通信的地方加一个线程,但是对c++线程编程也不熟悉,有没有哪个好心人可以帮我写服务器监听和通信的线程,感激不尽,谢谢啦!!!
代码如下所示:

CString str_sendZ;
int len_zk=str_sendZ.GetLength();
if(!AfxSocketInit()) //套接字不能初始化
{
AfxMessageBox("发送综控端口初始化失败");
return ;
}
flag_z=false;
//创建socket,最好不要使用aSocket.Create创建,因为容易会出现10048错误
if(!z_socket.Socket())
{
int err=GetLastError();
AfxMessageBox(err);
return ;
}

BOOL bOptVal=TRUE;
int bOptLen=sizeof(BOOL);
//设置Socket的选项, 解决10048错误必须的步骤
z_socket.SetSockOpt(SO_REUSEADDR,(void *)&bOptVal,bOptLen,SOL_SOCKET);
//端口绑定
if(!z_socket.Bind(Z_CLIENT_PORT))
{
int err=GetLastError();
AfxMessageBox(err);
return ;
}
//监听
if(!z_socket.Listen(1))
{
int err=GetLastError();
AfxMessageBox(err);
return ;
}
while(!flag_z)
{
if(!z_socket.Accept(z_socket_client))
continue;
else
{
//发送内容给客户端
str_sendZ=str_datatime;
len_z=str_sendZ.GetLength();
z_socket_client.Send(str_sendZ,len_z);
}
}//while(!flag_z)
...全文
202 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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