阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux配置及测试IP多播(Multicast)

175次阅读
没有评论

共计 2298 个字符,预计需要花费 6 分钟才能阅读完成。

224.0.0.0 到 239.255.255.255  这些都叫组播地址

我举个 不太严谨 的例子
有几个主机已经加入了 224.1.1.1 这个组
192.168.1.1—192.168.1.2—192.168.1.3— 比如这三个 ip 地址加入了组 224.1.1.1
然后组播源 10.1.1.1— 向 224.1.1.1 这个组地址发送信息的时候  那几个加入组的主机都会收到组播源发送的信息 … 如果你用 icmp 来检测的话  组播源 10.1.1.1 ping 224.1.1.1 是可以通的 就证明组播通了也就是下面的组员接收到了组播信息

So  我们来进行多播的配置工作

首先:
ifconfig -a

当我们检验 eth0 时未看见 MULTICAST,我们需要输入指令使其出现:

ifconfig eth0 multlicast

那么问题来了 新版本中没有 eth0,而是 eno16777736,So:我们需要将 eno16777736 改为 eth0

解决方法:http://www.linuxidc.com/Linux/2015-09/123396.htm

好了,现在已经启用多播了。现在需要新增 D 级多播网络的 IP 路由。那么需要新增下列路径:
#route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

那么什么是 D 级多播地址

D 类地址用于多点广播(Multicast)。

D 类 IP 地址第一个字节以 ”1110″ 开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播 (Multicasting) 中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

D 类的 IP 地址不标识网络,其地址覆盖范围为 224.0.0.0~239.255.255.255。

接下来我们可用单一机器或局域网上两台机器测试 IP 多播的 Java 程序,如下:

import java.net.DatagramPacket; 
import java.net.InetAddress; 
import java.net.MulticastSocket; 
 
import javax.swing.text.Utilities; 
 
public class MulticastNode {
 
InetAddress group = null; 
MulticastSocket s = null; 
 
public static void main(String[] args) {
if (args.length > 0) {
System.out.println(“Sending message:” + args[0]); 
 
MulticastNode node = new MulticastNode(); 
node.send(args[0]); 
node.receive(); 
} else {
System.out.println(“Need an argument string to send.”); 
System.exit(1); 


 
public MulticastNode() { 
 
try {
 
group = InetAddress.getByName(“224.0.0.1”); 
s = new MulticastSocket(45564); 
s.joinGroup(group); 
} catch (Exception e) {
e.printStackTrace(); 

 

 
public void send(String msg) {
try {
DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 45564); 
s.send(hi); 
} catch (Exception e) {
e.printStackTrace(); 


 
public void receive() { 
 
byte[] buf; 
while (true) {
try {
buf = new byte[1000]; 
DatagramPacket recv = new DatagramPacket(buf, buf.length); 
s.receive(recv); 
System.out.println(“Received:” + new String(buf)); 
} catch (Exception e) {
e.printStackTrace(); 


 

 
}

这个 java 程序主要需要注意 group = InetAddress.getByName(“224.0.0.1”); 这句话,其中这个地址指的是你的多播地址,而不是你的 ip 地址,我是通过不同 ip 地址的主机加入统一多播地址 224.0.0.1(如果你的程序报 not a Multicast address, 则需要看见面多播地址如何查询)

多播地址查询方法为:
netstat -gn

将这个 java 程序打成 jar 包放入 linux 或 window 中,通过输入

java -jar Mult.jar NodeOne

(请改成你的 jar 包名字)
2.
java -jar Mult.jar NodeTwo

效果应为  Sending message:NodeOne
        Received:NodeOne
        Received: NodeTwo
我用 Window 测试的,Linux 上的结果都一样, 效果图如下:

Linux 配置及测试 IP 多播(Multicast)

Linux 配置及测试 IP 多播(Multicast)

Linux 配置及测试 IP 多播(Multicast)

更多 RedHat 相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134224.htm

 

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2298字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中