參考: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)