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); } }
以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!