Linux構成およびテストIPマルチキャスト(Multicast)

3150 ワード

224.0.0~239.255.255.255.255これらはすべてマルチキャストアドレスと呼ばれます
私があまり厳密ではない例を挙げると、いくつかのホストが224.1.1.1.1.1に加入しています.このグループ192.168.1.1--192.168.1.2--192.168.1.3--192.168.1.3--例えば、この3つのipアドレスがグループ224.1.1.1.1.1に加入し、マルチキャストソース10.1.1.1--224.1.1.1.1というグループのアドレスに情報を送信すると、そのいくつかのグループに加入したホストはマルチキャストソースから送信された情報を受信します.もしあなたがicmpで検出するならば、マルチキャストソース10.1.1.1 ping 224.1.1.1.1は通じることができて、マルチキャストが通じることを証明しますつまり下のグループ員はマルチキャスト情報を受信しました
Soマルチキャストの構成作業を行います
まず、
ifconfig -a

eth 0をチェックするとMULTICASTが表示されないので、命令を入力して表示する必要があります.
ifconfig eth0 multlicast

では、新しいバージョンではeth 0ではなくeno 1677736が問題になりました.eno 1677736をeth 0に変更する必要があります.http://jingyan.baidu.com/article/6181c3e081f178152ef1538f.htmlはい、マルチキャストが有効になりました.D級マルチキャストネットワークのIPルーティングを追加する必要がある.では、次のパスを追加する必要があります.
#route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

では、マルチキャスト(Multicast)のためのDレベルマルチキャストアドレスDクラスアドレスとは何か.DクラスIPアドレスの最初のバイトは「1110」で始まり、専用の予約されたアドレスである.特定のネットワークを指すものではなく、現在、このようなアドレスはマルチキャスト(Multicasting)で使用されている.マルチキャストアドレスは、同じプロトコルを共有するコンピュータのセットを識別するコンピュータのセットを一度にアドレスするために使用される.DクラスのIPアドレスはネットワークを識別せず、そのアドレスカバー範囲は224.0.0~239.255.255.255である.次に、IPマルチキャストのJavaプログラムを、単一のマシンまたはローカルエリアネットワーク上の2台のマシンでテストすることができます.以下のようにします.
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.0.1(プログラムがnot a Multicast addressを報告した場合、マルチキャストアドレスがどのように検索されるかを見る必要があります)マルチキャストアドレスクエリー方法は次のとおりです.
netstat -gn

このjavaプログラムをjarパッケージにしてlinuxまたはwindowに入れ、入力します.
1.
java -jar Mult.jar NodeOne

(jarバッグの名前に変更してください)2.
java -jar Mult.jar NodeTwo

効果はSending message:NodeOne Received:NodeOne Received:NodeTwo windowでテストしたもので、linuxの結果はすべて同じで、効果図は以下の通りです.
転載先:https://blog.51cto.com/10146719/1836886