UDP通讯,用于软件间的通讯
using System.Threading;
using System.Net.Sockets;
using System.Net;
发送部分
void SendMsg(string toip, int port, string message) { try { UdpClient udpclient = new UdpClient(); IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(toip), port); byte[] data = Encoding.Default.GetBytes(message); udpclient.Send(data, data.Length, ipendpoint); udpclient.Close(); } catch (Exception ex) { MessageBox.Show("UDP发送数据" + ex.ToString()); } } private void button1_Click(object sender, EventArgs e) { SendMsg("127.0.0.1", 1987, textBox1.Text); }
接收端
Thread thrRecv; bool IsUdpcRecvStart = false; private UdpClient udpcRecv; private void button2_Click(object sender, EventArgs e) { if (!IsUdpcRecvStart) // 未监听的情况,开始监听 { IPEndPoint localIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1987); // 本机IP和监听端口号 udpcRecv = new UdpClient(localIpep); thrRecv = new Thread(ReceiveMessage); thrRecv.Start(); IsUdpcRecvStart = true; listBox1.Items.Add("UDP监听器已成功启动"); } else // 正在监听的情况,终止监听 { thrRecv.Abort(); // 必须先关闭这个线程,否则会异常 udpcRecv.Close(); IsUdpcRecvStart = false; listBox1.Items.Add("UDP监听器已成功关闭"); } } private void ReceiveMessage(object obj) { IPEndPoint remoteIpep = new IPEndPoint(IPAddress.Any, 0);// while (true) { try { byte[] bytRecv = udpcRecv.Receive(ref remoteIpep); string message = Encoding.ASCII.GetString(bytRecv, 0, bytRecv.Length); this.Invoke(new MethodInvoker(delegate() { listBox1.Items.Add(message); })); } catch (Exception ex) { MessageBox.Show("" + ex); break; } } }
原文:https://www.cnblogs.com/MWM0301/p/11714729.html