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

UDP 多點廣播實作:JoinMulticastGroup 與 DropMulticastGroup 完整教學

     編輯:關於C語言

UDP 多點廣播核心概念

在 UDP 通訊中,若要實現「一對多」的資料傳送,必須善用多點廣播(Multicast)機制。與一般單點傳輸不同,多點廣播允許發送端一次發送資料,所有加入同一多點廣播群組的接收端即可同時收到。這在即時串流、股票行情推送、區域網路通知等場景極為實用。

關鍵參數:remoteEP 與 multicastAddr

呼叫 JoinMulticastGroup 時需注意兩個關鍵參數:

  • remoteEP:型別為 IPEndPoint,必須指向發送方的 IP 與連接埠,屬於引用型別傳遞。
  • multicastAddr:型別為 IPAddress,但不再是單一主機 IP,而是一組廣播位址(例如 C 類網路將主機位元全置 1,如 222.18.142.255)。

JoinMulticastGroup 方法多載

public void JoinMulticastGroup(IPAddress multicastAddr);
public void JoinMulticastGroup(IPAddress multicastAddr, int timeToLive);
public void JoinMulticastGroup(int ifindex, IPAddress multicastAddr);
  • timeToLive:以路由器跳數為單位的 TTL,控制封包傳播範圍。
  • ifindex:指定網路介面索引,適用於多網卡環境。

完整程式碼範例

using System.Net;
using System.Net.Sockets;

UdpClient uc = new UdpClient();
IPAddress bcip = IPAddress.Parse("222.18.142.255"); // C 類廣播位址

try
{
    uc.JoinMulticastGroup(bcip, 20); // 加入多點廣播群組,TTL=20
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

離開群組:DropMulticastGroup

public void DropMulticastGroup(IPAddress multicastAddr);

呼叫此方法即可讓 UdpClient 退出指定的多點廣播群組,釋放相關資源。

補充:直接使用 Socket 實作 UDP 通訊

若不使用 UdpClient,可直接建立 Socket 實例:

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  • SocketType.Dgram:表示資料報模式,非串流。
  • ProtocolType.Udp:指定 UDP 協定。

UDP 與 TCP 快速比較

特性UDPTCP
即時性優(無握手、無流控)較低(三向交握、滑動視窗)
可靠性不可靠,可能丟包、亂序可靠,保證送達與順序
負載極低較高(標頭、確認機制)
適用場景即時影音、遊戲、廣播檔案傳輸、郵件、網頁
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved