程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# IP多播

C# IP多播

編輯:C#入門知識

IP多播(也稱多址廣播或組播)技術,是一種允許一台或多台主機(多播源)發送單一數據包到多台主機(一次的,同時的)的TCP/IP網絡技術。

  多播作為一點對多點的通信,是節省網絡帶寬的有效方法之一。

  在網絡音頻/視頻廣播的應用中,當需要將一個節點的信號傳送到多個節點時,無論是采用重復點對點通信方式,還是采用廣播方式,都會嚴重浪費網絡帶寬,只有多播才是最好的選擇。          多播能使一個或多個多播源只把數據包發送給特定的多播組,而只有加入該多播組的主機才能接收到數據包。

     目前,IP多播技術被廣泛應用在網絡音頻/視頻廣播、AOD/VOD、網絡視頻會議、多媒體遠程教育、“push”技術(如股票行情等)和虛擬現實游戲等方面。

 

IP多播地址采用D類IP地址, 地址范圍是 224.0.0.0 到 239.255.255.255.

保留IP多播地址的一些例子:

224.0.0.1 - 該子網上的所有主機。

224.0.0.2 - 該子網上的所有路由器。

224.0.0.5 - 開放最短路徑優先(Open Shortest Path First,OSPF)算法第2版,設計用於到達某個網絡上的所有OSPF路由器。

224.0.0.6 - 開放最短路徑優先算法第2版,設計用於到達某個網絡上的所有OSPF指定的路由器。

224.0.0.9 - 路由信息協議(Routing Information Protocol,RIP)第2版。

224.0.1.1 - 網絡時間協議(Network Time Protocol)。

 

組管理協議(IGMP)

 

1. 先看 接收端

主機在接收IP多播數據之前, 必須成為IP多播組的成員

\\代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace _5._3_IP多播
{
class Program
{
static void Main(string[] args)
{
//1 創建套節字
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

//2 綁定到 4567 端口
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 4567);
EndPoint ep = (EndPoint)ipe;
s.Bind(ep);

//3 加入多播組 234.5.6.7
MulticastOption optionValue = new MulticastOption(IPAddress.Parse("234.5.6.7"));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, optionValue);

//4 接收多播組數據
Console.WriteLine("開始接收多播組 234.5.6.7 上的數據...");
byte[] buffer = new byte[1024];
while (true)
{
int nRet = s.ReceiveFrom(buffer, ref ep);
if (nRet > 0)
{
string data = Encoding.Unicode.GetString(buffer, 0, nRet);
Console.WriteLine(data);
}
}
}
}
}

 

2. 發送端

要向組發送數據, 沒必要非加入那個組。

\\代碼