十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C# UDP 广播通信

C# UDP 广播通信 一、UDP广播核心必考原理1.1 广播地址定义255.255.255.255全局局域网广播地址向该地址发送的数据包局域网内所有监听对应端口的设备都能收到。1.2 UDP广播独有特性基于UDP无连接协议无需握手、无需一对一绑定广播服务端不需要绑定本地端口只需要Connect广播地址固定端口广播发送无需指定远端EndPoint直接Send即可全网推送客户端必须绑定对应监听端口才能接收广播消息一对多通信一个服务端发送多个客户端同时接收1.3 单播 VS 广播考试简答题单播一对一通信必须指定对方IP和端口广播一对多通信目标为255.255.255.255全网同端口客户端接收二、UDP广播服务器源码_4广播服务器2.1 服务端核心逻辑广播服务端特点不绑定本地端口、Connect广播地址、发送无需指定终端2.2 完整可运行代码using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Windows.Forms; namespace _4广播服务器 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } UdpClient udp; private void button1_Click(object sender, EventArgs e) { try { if (button1.Text 启动) { // 广播服务端无需绑定本地端口直接创建UdpClient udp new UdpClient(); // 绑定全局广播地址 目标端口9999 IPEndPoint point new IPEndPoint(IPAddress.Parse(255.255.255.255), 9999); // 连接广播域后续所有发送全部自动广播 udp.Connect(point); button1.Text 停止; } else { // 释放资源 udp.Close(); udp null; button1.Text 启动; } } catch (Exception) { throw; } } // 广播发送按钮 private void button2_Click(object sender, EventArgs e) { // 编码字符串 byte[] bs Encoding.UTF8.GetBytes(textBox1.Text); // 已Connect广播地址无需传EndPoint直接全网发送 udp.Send(bs, bs.Length); } } }2.3 服务端考点解析new UdpClient()无参构造不占用本地端口专门用于发送udp.Connect(广播终端)限定后续所有发送为广播模式Send(字节数组,长度)重载无需指定远端地址简化广播发送三、UDP广播客户端源码_5广播客户端3.1 客户端核心逻辑客户端必须固定绑定监听端口9999持续异步接收全网广播消息3.2 完整可运行代码using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; using System.Text; using System.Windows.Forms; namespace _5广播的客户端 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } CancellationTokenSource cts; UdpClient udpClient; private void button1_Click(object sender, EventArgs e) { try { if (button1.Text 启动) { // 客户端必须绑定本机IP广播端口才能接收广播数据 IPEndPoint point new IPEndPoint(IPAddress.Parse(192.168.219.9), 9999); udpClient new UdpClient(point); button1.Text 停止; // 开启异步循环接收广播 cts new CancellationTokenSource(); Task.Run(async () { while (!cts.IsCancellationRequested) { // 异步接收自带远端终端信息 var result await udpClient.ReceiveAsync(); // 跨线程更新UI Invoke(new Action(() { string msg Encoding.UTF8.GetString(result.Buffer); richTextBox1.Text ${result.RemoteEndPoint}:{msg}{Environment.NewLine}; })); } }, cts.Token); } else { // 安全关闭释放 cts?.Cancel(); udpClient.Close(); udpClient null; button1.Text 启动; } } catch (Exception) { throw; } } } }3.3 客户端考点解析客户端必须绑定端口9999与服务端广播端口一致否则收不到消息使用ReceiveAsync()异步接收不阻塞UI线程返回值UdpReceiveResult包含缓冲区数据 发送方终端CancellationTokenSource 实现线程安全停止四、UDP广播考试核心考点汇总4.1 广播通信流程背诵广播服务端创建UdpClient → Connect(255.255.255.255:端口) → 直接Send发送广播客户端绑定本机IP相同端口 → 循环监听接收 → 展示消息局域网内所有同端口客户端均可接收同一条广播消息4.2 必考区别单播/广播单播一对一必须指定目标IP端口广播一对多目标255.255.255.255无需逐个客户端寻址4.3 易错扣分点广播服务端不能绑定端口只需要Connect广播地址广播客户端必须绑定对应端口否则无法监听收发端口必须严格一致否则通信失败子线程更新UI必须Invoke否则程序闪退广播数据包无法跨网段仅限局域网内部五、简答题满分模版UDP广播通信基于无连接UDP协议实现一对多局域网通信服务端连接全局广播地址255.255.255.255与固定端口无需绑定本地端口直接发送数据即可完成全网广播。客户端绑定与服务端一致的监听端口通过异步循环接收广播消息实现局域网内所有客户端同步接收服务端消息。UDP广播无需建立连接、通信高效适用于局域网设备群发、消息推送场景。
返回列表