我想在多播的接收端异步接收数据到达的消息。
因为我这个程序是随系统启动的,如果使用阻塞模式影响其他程序的运行。
我已经实现了阻塞模式的接收,能够收到数据,可是使用异步接收的时候,在数据到来的时候,无法收到通知。清各位大侠指教。
数据的发送端能正常工作。
接收端使用类向导创建了一个CAsyncSocket类的派生类lpsocket
然后通过类向导为lpsocket定义了OnReceive的消息映射函数,在函数中加入了一条语句AfxMessageBox("成功收到通知");然后在对话框应用程序中的初始化中加入如下语句 ip_mreq mcaddr;
CString group;
CString sendip;
UINT sendport;
group = "224.0.1.1";
mcaddr.imr_multiaddr.s_addr = inet_addr(group);
mcaddr.imr_interface.s_addr = htons(INADDR_ANY);//设定本机地址
lpsocket sockreceive;
if (!sockreceive.Create(1114, SOCK_DGRAM, 0))
AfxMessageBox("error in create socket") ;
if(!sockreceive.SetSockOpt (IP_ADD_MEMBERSHIP,&mcaddr,sizeof(ip_mreq),IPPROTO_IP))
AfxMessageBox("error in add socket into group");
if(!sockreceive.AsyncSelect (FD_READ))AfxMessageBox("error in SELECT");
int rcvbuf = 10050;
if(!sockreceive.SetSockOpt(SO_RCVBUF,&rcvbuf,sizeof(int),SOL_SOCKET))
AfxMessageBox("error in set socket max rcvbuf");//设置接收缓存
const int recvsize = 10001 ;
char buf[recvsize];
int recdata = recvsize;
recdata = sockreceive.ReceiveFrom(buf,recvsize,sendip,sendport,0);
if(recdata == -1)AfxMessageBox("没有接收到");我想问一下,为什么在发送端发出数据之后,接收端为什么没有收到通知。
是不是异步的接收出现了问题?
因为我这个程序是随系统启动的,如果使用阻塞模式影响其他程序的运行。
我已经实现了阻塞模式的接收,能够收到数据,可是使用异步接收的时候,在数据到来的时候,无法收到通知。清各位大侠指教。
数据的发送端能正常工作。
接收端使用类向导创建了一个CAsyncSocket类的派生类lpsocket
然后通过类向导为lpsocket定义了OnReceive的消息映射函数,在函数中加入了一条语句AfxMessageBox("成功收到通知");然后在对话框应用程序中的初始化中加入如下语句 ip_mreq mcaddr;
CString group;
CString sendip;
UINT sendport;
group = "224.0.1.1";
mcaddr.imr_multiaddr.s_addr = inet_addr(group);
mcaddr.imr_interface.s_addr = htons(INADDR_ANY);//设定本机地址
lpsocket sockreceive;
if (!sockreceive.Create(1114, SOCK_DGRAM, 0))
AfxMessageBox("error in create socket") ;
if(!sockreceive.SetSockOpt (IP_ADD_MEMBERSHIP,&mcaddr,sizeof(ip_mreq),IPPROTO_IP))
AfxMessageBox("error in add socket into group");
if(!sockreceive.AsyncSelect (FD_READ))AfxMessageBox("error in SELECT");
int rcvbuf = 10050;
if(!sockreceive.SetSockOpt(SO_RCVBUF,&rcvbuf,sizeof(int),SOL_SOCKET))
AfxMessageBox("error in set socket max rcvbuf");//设置接收缓存
const int recvsize = 10001 ;
char buf[recvsize];
int recdata = recvsize;
recdata = sockreceive.ReceiveFrom(buf,recvsize,sendip,sendport,0);
if(recdata == -1)AfxMessageBox("没有接收到");我想问一下,为什么在发送端发出数据之后,接收端为什么没有收到通知。
是不是异步的接收出现了问题?
解决方案 »
- 如何实现点阵读取Richedit里面的文本内容?
- 我使对话框程序在启动时自动隐藏了(代码见下面),现在要通过一个快捷键让它再显示,应该怎么让它显示?
- 在子窗口中定义了一个工具栏,怎么得到工具栏的句柄?
- 谁知道这是什么错误(100分)?
- 简单问题,DLL调用问题
- 进来看看,安装pb8的问题
- 再加100分,犒劳ITGG,请进来看看?
- 求 IHTMLDocument2 IHTMLAnchorElement IHTMLElementCollection 的中文开发资料
- 一个好消息,希望大家帮帮忙!
- 向所有高手(比如:111222、VCBEAR、白菜,也欢迎:bicom(VC++垃圾筐))求救(不论用什么B、C、D)!
- 如何实现多路混音播放技术
- WINPCAP开发问题:我下了整个3.01开发包及源代码,编译示例程序后,发现程序运行时获到的包有问题,不知怎样解决?
高手难道都去度假了?