首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 多點傳送 (Multicast) 程式設計完整教學

     編輯:Java 相關知識

IP 多點傳送 允許單一封包同時傳遞給一組主機,優於廣播之處在於僅傳遞給加入該組的接收者。D 類地址 (224.0.0.0~239.255.255.255) 保留為多點傳送群組地址。Java 提供 MulticastSocket 類別 (繼承自 DatagramSocket) 完整支援此功能。

核心 API

  • 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

發送端輸入文字,所有接收端即時收到,驗證一對多傳遞效果。適用於股票報價、即時廣播等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved