国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#使用UdpClient類進行簡單通信的實例

2019-10-29 21:17:12
字體:
來源:轉載
供稿:網友

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);  }}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武陟县| 黑河市| 桐乡市| 奎屯市| 青海省| 盱眙县| 什邡市| 福鼎市| 奉贤区| 金沙县| 江口县| 阿勒泰市| 辽源市| 兰州市| 石狮市| 延长县| 淳化县| 普安县| 于都县| 桦南县| 无棣县| 常熟市| 巫山县| 偏关县| 舞阳县| 乌海市| 安丘市| 老河口市| 印江| 三江| 鄱阳县| 大宁县| 玉门市| 舒城县| 太仓市| 中超| 沙坪坝区| 永城市| 平利县| 华亭县| 若尔盖县|