我想在多播的接收端异步接收数据到达的消息。
因为我这个程序是随系统启动的,如果使用阻塞模式影响其他程序的运行。
我已经实现了阻塞模式的接收,能够收到数据,可是使用异步接收的时候,在数据到来的时候,无法收到通知。清各位大侠指教。
数据的发送端能正常工作。
接收端使用类向导创建了一个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("没有接收到");我想问一下,为什么在发送端发出数据之后,接收端为什么没有收到通知。
是不是异步的接收出现了问题?