在 UDP 通訊中,若要實現「一對多」的資料傳送,必須善用多點廣播(Multicast)機制。與一般單點傳輸不同,多點廣播允許發送端一次發送資料,所有加入同一多點廣播群組的接收端即可同時收到。這在即時串流、股票行情推送、區域網路通知等場景極為實用。
呼叫 JoinMulticastGroup 時需注意兩個關鍵參數:
IPEndPoint,必須指向發送方的 IP 與連接埠,屬於引用型別傳遞。IPAddress,但不再是單一主機 IP,而是一組廣播位址(例如 C 類網路將主機位元全置 1,如 222.18.142.255)。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);
}
public void DropMulticastGroup(IPAddress multicastAddr);
呼叫此方法即可讓 UdpClient 退出指定的多點廣播群組,釋放相關資源。
若不使用 UdpClient,可直接建立 Socket 實例:
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
SocketType.Dgram:表示資料報模式,非串流。ProtocolType.Udp:指定 UDP 協定。| 特性 | UDP | TCP |
|---|---|---|
| 即時性 | 優(無握手、無流控) | 較低(三向交握、滑動視窗) |
| 可靠性 | 不可靠,可能丟包、亂序 | 可靠,保證送達與順序 |
| 負載 | 極低 | 較高(標頭、確認機制) |
| 適用場景 | 即時影音、遊戲、廣播 | 檔案傳輸、郵件、網頁 |