最簡單的C#,UDP通訊簡例。


初次接觸網絡編程,由於自己功力有限,一個最簡單的UPD實例都摸索了好久。

網絡上雖然有很多例子,但總是存在個別不理解的語句,終於通過一個簡單的例子,使思路能夠連續起來。

例子的實現功能:發送端發送一段字符串數據;接收端接收數據,並打印出來。

 

發送端代碼:

 1 static void Main(string[] args)
 2         {
 3             IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4505);
 4             UdpClient udpClient = new UdpClient(udpPoint);
 5             //UdpClient udpClient = new UdpClient();
 6             string sendMsg = "Hello UDP Server.";
 7             byte[] sendData = Encoding.Default.GetBytes(sendMsg);
 8             IPEndPoint targetPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5500);
 9             udpClient.Send(sendData, sendData.Length, targetPoint);
10             Console.WriteLine("Send Message:{0}",sendMsg);
11             Console.Read();
12         }

1、UdpClient的實例化時需要依靠一個IpEndPoint對象,這個IpEndPoint對象在UdpClient收發數據時,起到關鍵的作用。

2、targetPoint表示,發送的數據要去往的地址。因為我在本機測試,所以targetPoint與udpPoint的兩個IPAddress是一樣的,它們之間是沒有關系的。

接收端代碼:

 1 static void Main(string[] args)
 2         {
 3             IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5500);
 4             UdpClient udpClient = new UdpClient(udpPoint);
 5             //IPEndPoint senderPoint = new IPEndPoint(IPAddress.Parse("14.55.36.2"), 0);
 6             IPEndPoint senderPoint = new IPEndPoint(IPAddress.Any, 0);
 7             byte[] recvData = udpClient.Receive(ref senderPoint);
 8             Console.WriteLine("Receive Message:{0}",Encoding.Default.GetString(recvData));
 9             Console.Read();
10         }

1、接收端同樣初始化一個UdpClient對象,並指定其收發數據的IPEndPoint。

2、senderPint是一個IPEndPoint對象,用來存放,所接收到數據的發送者的IPEndPoint。在下面的方法udpClient.Receive中會用到。這里曾經困擾我很長時間,一直不知道這個對象在這時聲明做什么用,IPAddress.Any起到了什么作用。我的理解是,它只是為下面的Receive方法提前准備了一個對象,這個對象當前的地址和端口都不重要,重要的是,Receive方法可以使用它來存放一些東西。

3、udpClient.Receive方法,一直等待有數據傳過來,當有數據傳來時,返回數據,並將攜帶數據的IPEndPoint對象放入引用參數senderPoint中。這里我想到了一點,c#中的對象本身就是引用類型的(除了基本類型,struct等),為何還要加ref呢?似乎這里是為了明確地強調,這個要傳入的參數是會被改動的。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM