1. 程式人生 > >MFC中用Asyncsocket類實現udp組播

MFC中用Asyncsocket類實現udp組播

程式碼:

	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函式裡面寫資訊傳送的程式碼。