如何发送UDP组播

===============================   博客点滴积累,部分话语和知识点来源于网络,感谢网络资源的提供者======

socket通信术语上有三种通信方式:单播,广播,多播(也称组播),多播的IP地址是D类地址,地址范围224.0.0.0 ~239.255.255.255,这里不多说,到后面将物联网模块配网方式,会详细说明广播知识,组播知识。这里只贴代码。

对于发送组播报文,与发送其他udp报文无异,对于接收udp组播报文时,必须加入组播组才可以接收组播报文,这里用到了如下函数:

int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);
sockfd : 已经创建的socket描述符
level:设置什么协议(SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPV6)
optname:设置属性选项名字(不同协议选项不一样)
optval:属性值
optlen:长度
#define IP_ADD_MEMBERSHIP  3     /*加入一个特定的组播组*/
#define IP_DROP_MEMBERSHIP 4    /*离开一个特定的组播组*/
#define TEST_MUIT_IP "238.238.238.238"
设置加入组播,要用到的结构体如下:
typedef struct ip_mreq {
    struct in_addr imr_multiaddr; /* IP multicast address of group */
    struct in_addr imr_interface; /* local IP address of interface */
 } ip_mreq;
mreq.imr_multiaddr.s_addr = net_inet_aton(TEST_MUIT_IP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值