C#運用UdpClient類停止復雜通訊的實例。本站提示廣大學習愛好者:(C#運用UdpClient類停止復雜通訊的實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#運用UdpClient類停止復雜通訊的實例正文
UdpClient 類提供了一些復雜的辦法,用於在阻止同步形式下發送和接納無銜接 UDP 數據報。 由於 UDP 是無銜接傳輸協議,所以不需求在發送和接納數據前樹立近程主機銜接。但您可以選擇運用上面兩種辦法之一來樹立默許近程主機:
運用近程主機名和端口號作為參數創立 UdpClient 類的實例。 創立 UdpClient 類的實例,然後調用 Connect 辦法。可以運用在 UdpClient 中提供的任何一種發送辦法將數據發送到近程設備。 運用 Receive 辦法可以從近程主機接納數據。
UdpClient 辦法還允許發送和接納多路播送數據報。 運用 JoinMulticastGroup 辦法可以將 UdpClient 預訂給多路播送組。 運用 DropMulticastGroup 辦法可以從多路播送組中取消對 UdpClient 的預訂。
/// <summary>
/// 客戶端
/// </summary>
class UDPSender
{
static void Main(string[] args)
{
//創立一個UdpClient對象,0表示零碎自動分配發送端口
//(若同時在本機運轉服務端和客戶端,則服務端接納和客戶端發送需求運用不同端口,否則兩個順序運用同一端口將引發抵觸)
UdpClient udpSender = new UdpClient(0);
//銜接到服務端並指定接納端口
udpSender.Connect("localhost", 11000);
//銜接到子網播送地址並指定接納端口
//udpSender.Connect("192.168.1.255", 11000);
//(在運用TCP/IP協議的網絡中,主機標識段全為1的IP地址為播送地址,播送地址傳送給主機標識段所觸及的一切計算機。
//例如,關於192.168.1.0(255.255.255.0)網段,其播送地址為192.168.1.255(255的2進制即為11111111),
//當收回目的地址為192.168.1.255時,它將分發給該網段上的一切計算機。)
//把音訊轉換成字節流發送到服務端
byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
udpSender.Send(sendBytes, sendBytes.Length);
//封閉鏈接
udpSender.Close();
}
}
/// <summary>
/// 服務端
/// </summary>
class UDPReceive
{
static void Main(string[] args)
{
//創立一個UdpClient對象,11000為接納端口
UdpClient udpReceive = new UdpClient(11000);
//設置近程主機,(IPAddress.Any, 0)代表接納一切IP一切端口發送的數據
IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);//或 IPEndPoint remoteIpEndPoint = null;
//監聽數據,接納到數據後,把數據轉換成字符串並輸入
byte[] receiveBytes = udpReceive.Receive(ref remoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine("This is the message you received " + returnData.ToString());
Console.WriteLine("This message was sent from " + remoteIpEndPoint.Address.ToString() + " on their port number " + remoteIpEndPoint.Port.ToString());
//封閉銜接
udpReceive.Close();
}
}
備注:需求先運轉服務端,再運轉客戶端。否則客戶端在服務端運轉之前就曾經收回數據,則服務端不會接納到數據。
上面是運用 UdpClient 類停止多路播送組的復雜例子,參加相反的播送組地址即可完成多播。多路播送地址的范圍從 224.0.0.0 到 239.255.255.255 ,服務端和客戶端運用同一播送地址即可完成多播。
/// <summary>
/// 多路播送組客戶端
/// </summary>
class MulticastGroupClient
{
static void Main(string[] args)
{
//創立一個UdpClient對象,0表示零碎自動分配發送端口
var client = new UdpClient(0);
//將播送地址添加到多路播送組,生活期(路由器跳數)為10
var ip = IPAddress.Parse("234.56.78.90");
client.JoinMulticastGroup(ip, 10);
//定義終結點(服務端IP和接納端口),把音訊轉換成字節流後發送到服務端
var multicast = new IPEndPoint(ip, 7788);
byte[] bytes = Encoding.ASCII.GetBytes("Hello from multicast.");
client.Send(bytes, bytes.Length, multicast);
}
}
/// <summary>
/// 多路播送組服務端
/// </summary>
class MulticastGroupServer
{
static void Main(string[] args)
{
//創立一個UdpClient對象,7788為接納端口
var client = new UdpClient(7788);
//將播送地址添加到多路播送組,生活期(路由器跳數)為10
var ip = IPAddress.Parse("234.56.78.90");
client.JoinMulticastGroup(ip, 10);
//設置近程主機,(IPAddress.Any, 0)代表接納一切IP一切端口發送的數據
var multicast = new IPEndPoint(IPAddress.Any, 0);//或 IPEndPoint multicast = null;
//監聽數據,接納到數據後,把數據轉換成字符串並輸入
byte[] bytes = client.Receive(ref multicast);
string msg = Encoding.ASCII.GetString(bytes);
Console.WriteLine(msg);
}
}
以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!