基于udp的多播实现

关于多播的知识在下面的链接中;这里简要说一下函数部分
套接口选项
int setsockopt(int sockfd,int level,int optname,const void*optval.socklen_t optlen);

level optname 说明 optval类型
TPPROTO_TP IP_MULTICAST_LOOP 禁止多播数据回送 unsigned int
IP_ADD_MEMBERSHIP 加入多播组 ip_mreq{}
IP_DROP_MEMBERSHIP 离开多播组 ip_mreq{}

成功执行返回0,否则返回-1
1)选项IP_MULTICAST_LOOP
默认情况下,当本机发送组播数据到某个网络接口时 在IP层,数据会回送到本地的回环接口,选项IP_MULTICAST_LOOP用于控制数据是否回送到本地的回环接口
例如: 参数loop设置为0禁止回送 设置为1允许回送
注意:对于loop应当先初始化 在对其进行取地址操作
例如:
int loop=1;//将其设为1,然后在下面的函数对去取地址
setsockopt(sockfd,IPPROTO_IP,IP_MULTICAST_LOOP,&loop,sizof(loop));
2)选项IP_ADD_MEMBERSHIP和IP_DROP_MEMBERSHIP
加入或者退出一个多播组,通过选项IP_ADD_MEMBERSHIP和IP_DROP_MEMEBERSHIP,对于一个结构struct ip_mreq类型的变量进行控制
struct ip_mreq原型如下:
struct in_addr{
in_addr_t s_addr;
}
struct ip_mreq{
struct in_addr imn_multiaddr;//多组播IP,类似于QQ群号
struct in_addr imr_interface;//将要添加到多播组的IP,类似于QQ成员号
};
实现代码:亲测可用:

在这里插入图片描述
在这里插入图片描述
对于广播端:
在这里插入图片描述
转自

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值