您的位置:程序门 -> vc/mfc -> 网络编程



急死了~~帮忙看一下


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


急死了~~帮忙看一下
发表于:2007-06-05 09:43:23 楼主
这是一段接收udp的代码,那位大侠如果知道哪错,能帮我写清楚点吗~~在线急等~~谢谢了

bool   cnewmsgs2dlg::oninitdialog()
{
cdialog::oninitdialog();

//创建本地套接口
  m_sockrecv.create(6801,sock_dgram, "127.0.0.1 ");
  //绑定本地套接口
  m_sockrecv.bind(6801, "127.0.0.1 ");
  //创建一个定时器定时读取


return   true;     //   return   true     unless   you   set   the   focus   to   a   control
}
//开始按钮
void   cnewmsgs2dlg::onbeginbutton()  
{
char   szrecv[20];
cstring   szip= "127.0.0.1 ";
uint   uport=6801;
int   irecv   =m_sockrecv.receivefrom(szrecv,10,szip,uport,0);   ——————————————————————〉到这时就死这了
trace( "received   %d   byte\n ",irecv);
szrecv[irecv]= '\0 ';
m_srttestresult=szrecv;
updatedata(false);


}
发表于:2007-06-05 09:53:221楼 得分:0
收到数据的消息会投递到窗口上(主线程)onbeginbutton也是主线程中运行的,自然会阻塞住了。
修改成异步的模式就可以了。不需要在onbeginbutton中读取数据,可以在onreceive中收数据。
发表于:2007-06-05 10:11:252楼 得分:0
晕~~~guxingfeiyu(孤星飞雨)兄能告诉我怎莫修改成异步的模式吗~~小弟初学~~谢了~~还有onreceive怎没收数据
发表于:2007-06-05 10:17:363楼 得分:0
handle   hthread=createthread(null,0,recvproc,(lpvoid)precvparam,0,null);
closehandle(hthread);

dword   winapi   cchatdlg::recvproc(lpvoid   lpparameter)
{
socket   sock=((recvparam*)lpparameter)-> sock;
hwnd   hwnd=((recvparam*)lpparameter)-> hwnd;
delete   lpparameter; //视频讲述时,遗忘了释放内存的操作。sunxin

sockaddr_in   addrfrom;
int   len=sizeof(sockaddr);

char   recvbuf[200];
char   tempbuf[300];
int   retval;
while(true)
{
retval=recvfrom(sock,recvbuf,200,0,(sockaddr*)&addrfrom,&len);
if(socket_error==retval)
break;
sprintf(tempbuf, "%s说:   %s ",inet_ntoa(addrfrom.sin_addr),recvbuf);
::postmessage(hwnd,wm_recvdata,0,(lparam)tempbuf);
}
return   0;
}

提示,这是tcp的,自己修改下
发表于:2007-06-05 10:31:174楼 得分:0
m_sockrecv调用casyncsocket,建议重载它,这样可以利用它的onreceive函数来处理。
发表于:2007-06-05 11:44:105楼 得分:0
高手,偶看不懂。。
发表于:2007-06-05 16:34:516楼 得分:0
谢谢个位大侠啦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
发表于:2007-06-18 14:48:247楼 得分:0
onreceive函数
发表于:2007-06-18 15:27:288楼 得分:0
建议ioctlsocket()或wsaasyncselect(),都能设置异步模式,具体用法参考msdn


快速检索

最新资讯
热门点击