IP 多點傳送 允許單一封包同時傳遞給一組主機,優於廣播之處在於僅傳遞給加入該組的接收者。D 類地址 (224.0.0.0~239.255.255.255) 保留為多點傳送群組地址。Java 提供 MulticastSocket 類別 (繼承自 DatagramSocket) 完整支援此功能。
joinGroup(InetAddress) / leaveGroup(InetAddress):加入/離開群組。setInterface(InetAddress) / getInterface():指定/查詢多網卡介面。send(DatagramPacket, byte ttl):TTL 控制封包傳播範圍 (0=本機, 1=區域網, 32=站點, 64=地區, 128=洲際, 255=全球)。預設 TTL=1。MulticastSocket socket = new MulticastSocket();
InetAddress group = InetAddress.getByName("225.2.32.6");
while ((line = stdin.readLine()) != null) {
byte[] buf = line.getBytes();
DatagramPacket pkt = new DatagramPacket(buf, buf.length, group, port);
socket.send(pkt, (byte)1); // TTL=1 僅本地網路
}
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(group);
while (running) {
DatagramPacket pkt = new DatagramPacket(buf, buf.length);
socket.receive(pkt);
System.out.println("Received from " + pkt.getAddress() + ": " + new String(pkt.getData()));
}
socket.leaveGroup(group);
編譯後分別啟動:
java MultiCastSender 225.2.32.6 1111
java MultiCastReceiver 225.2.32.6 1111
發送端輸入文字,所有接收端即時收到,驗證一對多傳遞效果。適用於股票報價、即時廣播等場景。