为什么程序到这里就死了呢?

tmac_roy 2013-01-29 11:14:46
客户端
CSocket sockRecv;
sockRecv.Create();
while(!sockRecv.Connect(dlg->m_ipaddr,4040))
{
if(bStop)
{
sockRecv.Close();
return -1;
}
Sleep(50);
}

//判断文件是否被占用,等待打开
while(bOpen)
{
Sleep(500);
}
bOpen=TRUE;
//接收车牌号
DWORD dwTemp=0;
dwTemp=0;
sockRecv.AsyncSelect(0);
sockRecv.IOCtl(FIONBIO,&dwTemp);//变为阻塞方式
char Num[16]={0};
sockRecv.Receive(Num,sizeof(Num));


服务端
CSocket sockTemp;
CString str,str1;
sockTemp.Create(4040);
sockTemp.Listen();
CSocket sockSend;
bRead=FALSE;
sockTemp.Accept(sockSend);
BOOL bSend;
while(bOpen)
{
Sleep(500);
}
bOpen=TRUE;
//发送车牌号码
DWORD dwTemp=0;
BOOL bTest =sockSend.AsyncSelect(0);//由于CSocket实际是异步,将它变为同步(阻塞)方式。
sockSend.IOCtl( FIONBIO, &dwTemp);//用IOCtl要将AsyncSelect的第一个参数为0,参看MSDN
char* num=dlg->m_strCarNum.GetBuffer(0);
sockSend.Send(num,16);


程序在客户端接收那里就死了,怎么解决呢?
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2013-01-29
  • 打赏
  • 举报
回复
引用 4 楼 xiaohuh421 的回复:
BOOL bSend; while(bOpen) { Sleep(500); } 你这个循环,你认为在什么情况下会结束呢, 死循环了都.
看错鸟
xiaohuh421 2013-01-29
  • 打赏
  • 举报
回复
BOOL bSend; while(bOpen) { Sleep(500); } 你这个循环,你认为在什么情况下会结束呢, 死循环了都.
孤客天涯 2013-01-29
  • 打赏
  • 举报
回复
最好不要用CSocket,如果要用它,你最好添加OnReceive消息响应,在这个响应函数中再调用Receive函数,如果直接调用Receive,如果没有数据,会出错
tmac_roy 2013-01-29
  • 打赏
  • 举报
回复
引用 1 楼 jason_wentzel 的回复:
你把SOCKET设置成阻塞式,当然会停在接收那里呀,只有收到数据才会往下走
但是我是开的一个线程,但是程序整个都死了
孤客天涯 2013-01-29
  • 打赏
  • 举报
回复
你把SOCKET设置成阻塞式,当然会停在接收那里呀,只有收到数据才会往下走

18,356

社区成员

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

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