最简单的C#UDP通讯示例

参考:https://www.cnblogs.com/zxyc2000/articles/2846662.html  和  https://www.cnblogs.com/mq0036/p/7302605.html

UDP应用不是严格意义上的真正的服务器和客户机,而是平等的关系,即没有server与client的关系。

IPv4中的广播(broadcast)可以导致网络性能的下降甚至广播风暴(broadcast storm)。在IPv6中就不存在广播这一概念

1、打开vs2017新建控制台项目udpclient

 static void Main(string[] args)
        {            
            IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4505);
            UdpClient udpClient = new UdpClient(udpPoint);
            //UdpClient udpClient = new UdpClient(); 匿名发送,自动分配本地IPv4地址udpcSend = new UdpClient(0); 
            string sendMsg = "Hello UDP Server.";
            byte[] sendData = Encoding.Default.GetBytes(sendMsg);
            IPEndPoint targetPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5500);
            udpClient.Send(sendData, sendData.Length, targetPoint);
            Console.WriteLine("Send Message:{0}", sendMsg);
            Console.Read();
        }
    }

2.在解决方案资源管理器中,解决方案上点右键-添加-新建项目,添加控制台应用udpserver

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

3.添加引用,生成解决方案,先运行udpserver,再运行udpclient 。

4、大家可能注意到这个例子只能发送和接收一次,下一篇将介绍用TCP方式连续进行发送的例子。

5、如果希望控制台程序不显示窗口,可以创建好控制台程序后,选中项目,右键,属性,输出类型选为“windows 应用程序” 这样就没有dos窗口了(参考:https://blog.csdn.net/liyifei21/article/details/7948385)