news 2026/8/29 7:06:01

C# UDP 广播通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 广播通信流程(背诵)

  1. 广播服务端:创建UdpClient → Connect(255.255.255.255:端口) → 直接Send发送

  2. 广播客户端:绑定本机IP+相同端口 → 循环监听接收 → 展示消息

  3. 局域网内所有同端口客户端,均可接收同一条广播消息

4.2 必考区别(单播/广播)

  • 单播:一对一,必须指定目标IP端口

  • 广播:一对多,目标255.255.255.255,无需逐个客户端寻址

4.3 易错扣分点

  • 广播服务端不能绑定端口,只需要Connect广播地址

  • 广播客户端必须绑定对应端口,否则无法监听

  • 收发端口必须严格一致,否则通信失败

  • 子线程更新UI必须Invoke,否则程序闪退

  • 广播数据包无法跨网段,仅限局域网内部

五、简答题满分模版

UDP广播通信基于无连接UDP协议实现一对多局域网通信,服务端连接全局广播地址255.255.255.255与固定端口,无需绑定本地端口,直接发送数据即可完成全网广播。客户端绑定与服务端一致的监听端口,通过异步循环接收广播消息,实现局域网内所有客户端同步接收服务端消息。UDP广播无需建立连接、通信高效,适用于局域网设备群发、消息推送场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 7:02:26

软件设计师(中级)做题笔记

文章目录1、计算机系统知识1.1、计算机系统基础知识1.1.1 计算机系统硬件基本组成1.1.2 中央处理单元1.1.3、数据表示1.2、计算机体系结构1.2.2、存储系统1.2.3、输入输出技术2、程序设计语言基础知识2.1、程序设计语言概述2.1.1、程序语言的基本概念2.2、语言处理程序基础2.…

作者头像 李华
网站建设 2026/8/29 6:57:45

rem /em/vw /vh/px 单位区别与选型

1. px 像素绝对单位,固定不变;适合边框、小图标、固定尺寸。2. em 相对父级字体相对于父元素 font-size,嵌套容易叠加混乱,不推荐用于整体适配。3. rem 相对根字体相对于 html 根字体大小,移动端主流适配方案&#xff…

作者头像 李华
网站建设 2026/8/29 6:57:42

CSS 三大样式引入方式、样式冲突解决方案

1. 三种引入方式行内样式:style 属性,权重最高,不利于维护内部样式:style 标签,当前页面生效外部样式:link 引入 css 文件,项目标准规范2. 样式冲突解决权重高覆盖权重低权重相同,后…

作者头像 李华
网站建设 2026/8/29 6:57:38

伪类与伪元素区别、常用伪类场景汇总

1. 核心区别伪类(:):选中元素的状态,不生成新标签,如 hover、active、focus伪元素(::):创建虚拟DOM元素,相当于新增标签,如 before、after2. 常用伪类链接&am…

作者头像 李华
网站建设 2026/8/29 6:56:20

网易2018校招机器学习算法工程师笔试题解析与备考指南

每年到了校招季,总有很多同学在牛客网、知乎上翻旧题,而网易2018校园招聘机器学习算法工程师这套笔试卷,算是当年流传度极高、讨论量也很大的一套题。我自己当年也刷过,后来参与过校招笔试出题和面试,再看这套卷子&…

作者头像 李华
网站建设 2026/8/29 6:55:30

开源350万提示词背后:AI电影级生成的工作流与一致性控制

第一次看到这个开源项目的时候,我的第一反应不是兴奋,而是怀疑。标题里写着“价值 350 万的提示词开源了”,还牵扯到“全球首部全 AI 生成的电影长片”。做过 AI 生成内容的人会有种本能警觉:这个词条更像是营销组合,而…

作者头像 李华