以下核心代码
public partial class Form1 : Form {//更多相关源码请防问 www.luofenming.com public Form1() { InitializeComponent(); } /// <summary> /// 用于UDP发送的网络服务类 /// </summary> private UdpClient udpcRecv = null; private IPEndPoint localIpep = null; /// <summary> /// 线程:不断监听UDP报文 /// </summary> private Thread thrRecv; public void StartReceive(string IP, int port) { if (thrRecv == null || !thrRecv.IsAlive) // 未监听的情况,开始监听 { localIpep = new IPEndPoint(IPAddress.Parse(IP), port); // 本机IP和监听端口号 udpcRecv = new UdpClient(localIpep); thrRecv = new Thread(ReceiveMessage); thrRecv.IsBackground = true; thrRecv.Start(); DisplayData("UDP监听器已成功启动"); } } public void StopReceive() { if (thrRecv != null && thrRecv.IsAlive) { thrRecv.Abort(); // 必须先关闭这个线程,否则会异常 udpcRecv.Close(); DisplayData("UDP监听器已成功关闭"); } } /// <summary> /// 接收数据 /// </summary> /// <param name="obj"></param> private void ReceiveMessage(object obj) { while (true) { try { byte[] bytRecv = udpcRecv.Receive(ref localIpep); string message = Encoding.UTF8.GetString(bytRecv, 0, bytRecv.Length); DisplayData(string.Format($"{localIpep}[{message}]")); } catch (Exception ex) { Console.WriteLine(ex.Message); break; } } } /// <summary> /// 发送信息 /// </summary> /// <param name="obj"></param> private void SendMessage(string IP, int port, string message) { try { byte[] sendbytes = Encoding.UTF8.GetBytes(message); IPEndPoint remoteIpep = new IPEndPoint(IPAddress.Parse(IP), port); // 发送到的IP地址和端口号 udpcRecv.Send(sendbytes, sendbytes.Length, remoteIpep); } catch { } } private void DisplayData(string msg) { this.BeginInvoke(new Action( () => { textBox3.AppendText($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}\r\n{msg}\r\n"); } ) ); } //打开UDP private void button1_Click(object sender, EventArgs e) { int port; int.TryParse(textBox2.Text, out port); StartReceive(textBox1.Text, port); IsEnabled(false); } //发送信息 private void button2_Click(object sender, EventArgs e) { int port; int.TryParse(textBox5.Text, out port); SendMessage(textBox6.Text, port, textBox4.Text); IsEnabled(true); } //关闭UDP private void button3_Click(object sender, EventArgs e) { StopReceive(); } private void IsEnabled(bool isEnabled) { button1.Enabled = isEnabled; button2.Enabled = !isEnabled; button3.Enabled = !isEnabled; } }源码下载地址: https://pan.baidu.com/s/1wz1H3mxh0VBD38nYE2n0eA 提取码: bbck