UDP基本使用
UdpClient类:对Socket的封装,简化了发送/接收数据的操作(推荐新手使用);
UDP不存在连接
完整Demo代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace _018_UDP { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 创建UdpClient并绑定本地端口(8890) UdpClient udpServer = new UdpClient(8890); // IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); // 接收任意IP的任意端口数据 IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8899); private void button1_Click(object sender, EventArgs e) { // 发送响应(可选) string response = "消息已收到"; byte[] sendData = Encoding.UTF8.GetBytes(response); int SendBytesCount=udpServer.Send(sendData, sendData.Length, remoteEndPoint); //MessageBox.Show(SendBytesCount.ToString()); Console.WriteLine("发送数据:" + response); } private void timer1_Tick(object sender, EventArgs e) { // 异步接收数据(非阻塞) byte[] receivedData = udpServer.Receive(ref remoteEndPoint); string message = Encoding.UTF8.GetString(receivedData); Console.WriteLine($"接收到来自 {remoteEndPoint} 的消息:{message}"); } private void Form1_Load(object sender, EventArgs e) { Task.Factory.StartNew(() => { while (true) { try { // 异步接收数据(非阻塞) byte[] receivedData = udpServer.Receive(ref remoteEndPoint); string message = Encoding.UTF8.GetString(receivedData); Console.WriteLine($"接收到来自 {remoteEndPoint} 的消息:{message}"); } catch (Exception ex) { throw; } finally { Thread.Sleep(10); } } }); } private void button2_Click(object sender, EventArgs e) { udpServer.Close(); } } }

浙公网安备 33010602011771号