MFC中用Asyncsocket類實現udp組播
阿新 • • 發佈:2019-02-04
程式碼:
結果:void CUDPGroupDlg::OnBnClickedButton1() { //加入組播 bool opt = TRUE; ip_mreq setip; udpsocket.Create(CASTPORT,SOCK_DGRAM, FD_READ|FD_WRITE ,_T(LOCALIP));//建立SOCKET 埠為組播埠 setip.imr_multiaddr.S_un.S_addr = inet_addr(CASTIP);//組播地址 setip.imr_interface.s_addr = inet_addr(LOCALIP);//本機地址 if(udpsocket.SetSockOpt(IP_ADD_MEMBERSHIP, (char FAR *)&setip, sizeof(ip_mreq), IPPROTO_IP)<0) { AfxMessageBox(_T("加入組播失敗")); } else { AfxMessageBox(_T("加入組播成功")); } } void CUDPGroupDlg::OnBnClickedButton2() { udpsocket.AsyncSelect(FD_WRITE|FD_READ); }
簡單的實現了udp的組播,可以傳送,接收訊息。
過程:
由Asyncsocket派生一個類出來,過載Onsend和Onreceive;
視窗類裡建立一個socket,這裡create的第一個引數一定是組播的埠,千萬能搞錯。
建立的socket加入組播,還可以利用setsocketopt()設定其他屬性;此時可以接收資訊(可以在onreceive裡面進行資訊處理)
添加發送按鈕的訊息響應函式,asyncslekect讀和寫(不讀的話點完傳送按鈕會發現不能接收訊息了,不知為何),然後可以在onsend函式裡面寫資訊傳送的程式碼。