Android UDP多播 Not a multicast group 问题处理

Not a multicast group

			multicastSocket = new MulticastSocket(4320);

			multicastSocket.setLoopbackMode(true);
			InetAddress group = InetAddress.getByName(broad_address); 

原因是broad_address不是有效的多播组,多播组通过 D 类 IP 地址和标准 UDP 端口号指定。D 类 IP 地址在 224.0.0.0 和 239.255.255.255 的范围内(包括两者)。地址 224.0.0.0 被保留,不应使用。


下面是可以使用的代码:

		MulticastSocket multicastSocket;
		int port=getResources().getInteger(R.string.setting_defaultport);
		try {
			multicastSocket = new MulticastSocket(port);

			multicastSocket.setLoopbackMode(true);
			InetAddress group = InetAddress.getByName("228.5.6.7"); 
			InetAddress broad_address = NetUtils.getBroadcastAddress(context);
			multicastSocket.joinGroup(group);
...

也可以检测多播地址的有效性,捕获程序异常:

  if(!receiveAddress.isMulticastAddress()){//测试是否为多播地址  
  
                            throw new Exception("请使用多播地址");  
  
  }  
  

下面是多播IP的划分:

IP多播地址 是D类地址,224.0.0.0 到 239.255.255.255,是通过前四位设置为1110来定义的。在主机和服务器环境中,基本上只使用224.0.0.0/4(CIDR表示法)为多播地址。

224.0.0.1:该子网上的所有主机

224.0.0.2:该子网上的所有路由器

224.0.0.5: 开放最短路径优先算法(OSPF)第2版,设计用于到达某个网络上的所有OSPF路由器。

224.0.0.6:开放OSPF,设计用于到达某个网络上的所有OSPF指定的路由器。

224.0.0.9:路由信息协议第2版

224.0.1.1:网络时间协议


224.0.0.0~224.0.0.255 :局部链接多播地址

224.0.1.0~238.255.255.255:保留的地址

239.0.0.0~239.255.255.255:管理权限多播地址,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值