C# UDP通讯示例


示例目的:使用控制台项目模板分别新建一个服务器和一个客户端,实现两两通讯

1. 新建服务器

 1 static UdpClient udpServer;
 2         static void Main(string[] args)
 3         {
 4             udpServer = new UdpClient(61000);       // 当前服务器使用的端口
 5             udpServer.Connect("127.0.0.1", 50000); // 与客户端建立连接
 6             Console.WriteLine("服务端已经开启......");
 7 
 8             #region 开启线程保持通讯
 9 
10             var t1 = new Thread(ReciveMsg);
11             t1.Start();
12             var t2 = new Thread(SendMsg);
13             t2.Start();
14 
15             #endregion
16         }
17 
18         /// <summary>
19         /// 接收消息
20         /// </summary>
21         static void ReciveMsg()
22         {
23             
24             var remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 50000); // 远程端点,即发送消息方的端点
25             while (true)
26             {
27                 byte[] receiveBytes = udpServer.Receive(ref remoteIpEndPoint); // 接收消息,得到数据报
28                 string returnData = Encoding.UTF8.GetString(receiveBytes);     // 解析字节数组,得到原消息
29                 Console.WriteLine($"{remoteIpEndPoint.Address}:{remoteIpEndPoint.Port}," + returnData.ToString());
30             }
31             
32         }
33 
34         /// <summary>
35         /// 发送消息
36         /// </summary>
37         static void SendMsg()
38         {
39             while (true)
40             {
41                 var msg = Console.ReadLine().ToString();                // 获取控制台字符串
42                 byte[] sendBytes = Encoding.UTF8.GetBytes(msg); // 将消息编码成字符串数组
43                 udpServer.Send(sendBytes, sendBytes.Length);      // 发送数据报
44             }
45         }

 

2. 新建客户端

static UdpClient udpClient;
        static void Main(string[] args)
        {
            udpClient = new UdpClient(50000);       // 当前客户端使用的端口
            udpClient.Connect("127.0.0.1", 61000); // 与服务器建立连接
            Console.WriteLine("客户端已启用......");

            #region 开启线程保持通讯

            var t1 = new Thread(SendMsg);
            t1.Start();
            var t2 = new Thread(ReciveMsg);
            t2.Start();

            #endregion
        }

        /// <summary>
        /// 发送消息
        /// </summary>
        static void SendMsg()
        {
            while (true)
            {
                var msg = Console.ReadLine().ToString();           // 获取控制台字符串
                byte[] sendBytes = Encoding.UTF8.GetBytes(msg); // 将消息编码成字符串数组
                udpClient.Send(sendBytes, sendBytes.Length);       // 发送数据报
            }
        }

        /// <summary>
        /// 接收消息
        /// </summary>
        static void ReciveMsg()
        {
            var remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 61000); // 远程端点,即发送消息方的端点
            while (true)
            {
                byte[] receiveBytes = udpClient.Receive(ref remoteIpEndPoint); // 接收消息,得到数据报
                string returnData = Encoding.UTF8.GetString(receiveBytes);      // 解析字节数组,得到原消息
                Console.WriteLine($"{remoteIpEndPoint.Address}:{remoteIpEndPoint.Port}," + returnData.ToString());
            }

        }

 

3. 启动服务器和客户端,查看效果

 

 不足之处还请指点

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM