最简单的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)