接收端
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms; namespace UDPReceiveTest { public partial class Form1 : Form { public Thread UdpThread; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string strHostIP = ""; IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName); if (oIPHost.AddressList.Length > ) strHostIP = oIPHost.AddressList[].ToString(); this.txtIP.Text = strHostIP; if (UdpThread != null) { UdpThread.Abort(); Thread.Sleep(TimeSpan.FromMilliseconds(500d)); } try { UdpThread = new Thread(new ThreadStart(UdpReciveThread)); UdpThread.Start(); } catch (Exception y) { MessageBox.Show(this, y.Message, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error); this.Dispose(true); } } private void button1_Click(object sender, EventArgs e) { txtMessage.Text = string.Empty; } delegate void SetTextCallback(IPEndPoint remoteHost, byte[] buf, string bufs); //接收数据线程 void UdpReciveThread() { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Any, int.Parse(txtPort.Text));//接收广播信息,端口是(因为是广播端口是) socket.Bind(iep); EndPoint ep = (EndPoint)iep; Byte[] bytes = new byte[]; while (Thread.CurrentThread.ThreadState.Equals(ThreadState.Running)) { int message = socket.ReceiveFrom(bytes, ref ep);//接收发送的信息 string bufs = Encoding.UTF8.GetString(bytes); txtMessage.Text += (ep as IPEndPoint).Address.ToString() + "说:" +Environment.NewLine; txtMessage.Text += bufs + Environment.NewLine + Environment.NewLine; } txtMessage.Text += "结束..." + (char); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { UdpThread.Abort(); } catch { } } } }
发送端
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Windows.Forms; namespace UDPSendTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSend_Click(object sender, EventArgs e) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); IPEndPoint iep1 = new IPEndPoint(IPAddress.Parse(txtIP.Text),int.Parse(txtPort.Text));//进行地址的广播,广播端口 byte[] data = Encoding.ASCII.GetBytes(txtMessage.Text); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, ); sock.SendTo(data, iep1);//发送字符 sock.Close(); } } }