C#Socket網絡編程(三) UDP服務器端和客戶端連接


 

Socket(套接字)編程(Udp)

基於Udp協議是無連接模式通訊,占用資源少,響應速度快,延時低。至於可靠性,可通過 應用層的控制來滿足。(不可靠連接)     

(1).建立一個套接字(Socket)     

(2).綁定服務器端IP地址及端口號--服務器端     

(3).通過SendTo()方法向指定主機發送消息 (需提供主機IP地址及端口)     

(4).通過ReciveFrom()方法接收指定主機發送的消息 (需提供主機IP地址及端口)

TCP和UDP的區別
TCP協議和UDP協議連接過程的區別
1.基於連接與無連接;
2.對系統資源的要求(TCP較多,UDP少);
3.UDP程序結構較簡單;
4.流模式與數據報模式 ;
5.TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。

UDP服務器端:

 1 using System;
 2 using System.Net;
 3 using System.Net.Sockets;
 4 using System.Text;
 5 
 6 namespace _29_UDP服務器端
 7 {
 8     internal class Program
 9     {
10         static void Main(string[] args)
11         {
12 
13             Socket udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
14 
15             IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 31, 17 });
16             // IP + Port
17             IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 7788);
18 
19             udpServer.Bind(ipEndPoint);
20             //任何人都可以發送消息
21             IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 0);
22             EndPoint ep = (EndPoint)ipep;
23             byte[] data = new byte[1024];
24             int length = udpServer.ReceiveFrom(data, ref ep);
25 
26             Console.WriteLine("接收到數據:" + Encoding.UTF8.GetString(data, 0, length));
27 
28             udpServer.Close();
29         }
30     }
31 }

UDP客戶端:

 1 using System;
 2 using System.Net.Sockets;
 3 using System.Net;
 4 using System.Text;
 5 
 6 namespace UDP客戶端
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             //(SocketType.Dgram)數據包形式發送
13             Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
14             IPAddress iPAddress = new IPAddress(new byte[] { 192, 168, 1, 184 });
15             IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 6688);
16             //消息轉碼為byte
17             byte[] data = Encoding.UTF8.GetBytes("客戶端上線了");
18             //強轉iPEndPoint為EndPoint
19             EndPoint ep = (EndPoint)iPEndPoint;
20             //發送消息
21             udpClient.SendTo(data, ep);
22         }
23     }
24 }

 


免責聲明!

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



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