UDP协议(20250303)
1. UDP
UDP:用户数据报协议(User Datagram Protocol),传输层协议之一(UDP,TCP)
2. 特性
- 发送数据时不需要建立链接,节省资源开销
- 不安全不可靠的协议 //一般用在实时性比较高的广播,组播//VNC
- 面向报文。
- 资源开销小
3.框架
3.1 C/S模式
有一个专用的客户端 client----server
传输方式:用户主机1--->服务器---->用户主机2
框架设计
- server:socket() ===>bind()===>recvfrom()===>close()
- client:socket() ===>(bind())===>sendto() ===>close()
3.2 B/S模式
有一个通用的客户端浏览器
browser----server
client:socket() ===>sendto() ===>close()
4. API接口
4.1 socket函数
套接字:通信对象的抽象, 网络通信的端口,一个通信链的句柄。
int socket(int domain, int type, int protocol);
功能:
创建一个用来通信的接口(文件描述符)
参数:
domain:通信的协议族(AF_INET:IPv4协议族)
type:
SOCK_DGRAM:数据报套接字 (UDP使用此类型)
SOCK_STEAM:流式套接字 (TCP使用此类型)
SOCK_RAW:原始套接字
protocol:
默认传0 按照协议的默认属性创建
返回值:
成功返回用来进行通信的文件描述符
失败返回-1
IPv4地址形式:
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET */
in_port_t sin_port; /* 端口 */
struct in_addr sin_addr; /* IP地址 */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
端口转换:htons函数
地址转换:inet_addr函数
4.2 sendto函数
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
功能:
向一个IP地址和端口发送数据信息
端口号:区分一台主机不同的应用程序(0 - 65535)
参数:
sockfd:套接字文件描述符
buf:发送数据空间首地址
len:发送数据的长度
flags:发送数据属性(默认为0)
dest_addr:目的IP地址和端口
addrlen:目的IP地址和端口的长度
返回值:
成功返回实际发送字节数
失败返回-1
4.3 htons函数
主机转网络字节序
- 主机:小端 host
- 网络:大端 network
四种不同的转化函数
- uint32_t htonl(uint32_t hostlong); 主机转网络
- uint16_t htons(uint16_t hostshort); 主机转网络
- uint32_t ntohl(uint32_t netlong); 网络转主机
- uint16_t ntohs(uint16_t netshort); 网络转主机
h:host n:net l:long s:short
4.4 inet_addr函数
in_addr_t inet_addr(const char *cp);
功能:
将字符串IP地址转换成二进制IP地址形式
char *inet_ntoa(struct in_addr in);
功能:
将二进制ip转换成字符串
4.5 bind
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
功能:将一个套接字与IP地址和端口号绑定(只能绑定自己的IP地址)
参数:
sockfd:套接字文件描述符
addr:IP地址和端口号结构体首地址
addrlen:长度
返回值:
成功返回0
失败返回-1
4.6 recvfrom
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:
接收网络发送的数据信息
参数:
sockfd:套接字文件描述符
buf:存放数据空间首地址
len:最大能够接收的数据个数
flags:属性默认为0
src_addr:存放发送端IP地址信息的空间首地址
addrlen:想要接收的数据长度的空间首地址
返回值:
成功返回实际接收字节数
失败返回-1
具有阻塞功能(直到接收到数据,才会继续向下执行)
5. UDP报文头
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节

- 源端口: 源主机的应用程序使用的端口号
- 目的端口:目的主机的应用程序使用的端口号
- 长度:是指UDP头部和UDP数据的字节长度。因为UDP头 部长度为8字节,所以该字段的最小值为8
- 差错检测,检测UDP数据报在传输中是否有错,有错则丢弃
总结
- 无连接
- 尽最大努力交付(不安全,不可靠(丢包、乱序))
- 面向数据报
- 机制简单,传输效率高
应用场景:要求实时性高,但是允许数据丢失的场合(直播,VNC)
相关文章:
UDP协议(20250303)
1. UDP UDP:用户数据报协议(User Datagram Protocol),传输层协议之一(UDP,TCP) 2. 特性 发送数据时不需要建立链接,节省资源开销不安全不可靠的协议 //一般用在实时性比较高…...
【四.RAG技术与应用】【12.阿里云百炼应用(下):RAG的云端优化与扩展】
在上一篇文章中,我们聊了如何通过阿里云百炼平台快速搭建一个RAG(检索增强生成)应用,实现文档智能问答、知识库管理等基础能力。今天咱们继续深入,聚焦两个核心问题:如何通过云端技术优化RAG的效果,以及如何扩展RAG的应用边界。文章会穿插实战案例,手把手带你踩坑避雷。…...
Docker新手入门(持续更新中)
一、定义 快速构建、运行、管理应用的工具。 Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。 所谓镜像,就是将应用所需的函数库、依赖、配置等应用一起打包得到的。 所谓容器,为每个镜像的应用进程创建…...
【星云 Orbit • STM32F4】08. 用判断数据头来接收据的串口通用程序框架
【星云 Orbit • STM32F4】08. 用判断数据头来接收据的串口通用程序框架 1. 引言 本教程旨在帮助嵌入式开发小白从零开始,学习如何在STM32F407微控制器上实现一个基于串口的数据接收程序。该程序能够通过判断数据头来接收一串数据,并将其存储到缓冲区中…...
HSPF 水文模型建模方法与案例分析实践技术应用
在水文模拟领域,HSPF 模型(Hydrological Simulation Program Fortran)与 SWAT 模型一样,都是备受瞩目的水文模型软件。HSPF 模型因其强大的功能和简便的操作,在全球范围内得到了广泛应用。该模型不仅能够在缺乏测量数据…...
设置 CursorRules 规则
为什么要设置CursorRules? 设置 CursorRules 可以帮助优化代码生成和开发流程,提升工作效率。具体的好处包括: 1、自动化代码生成 :通过定义规则,Cursor 可以根据你的开发需求自动生成符合规定的代码模板,…...
人工智能AI在汽车设计领域的应用探索
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...
《当AI生成内容遭遇审核:需求与困境的深度剖析》:此文为AI自动生成
AI 内容审核:数字时代的守门人 在当今数字技术迅猛发展的浪潮中,AI 在内容生成领域取得了令人瞩目的成就,成为了推动创新与变革的核心力量。以 AI 绘画为例,从早期简单粗糙的图像生成,到如今能够创作出细节丰富、风格多…...
【无人机与无人车协同避障】
无人机与无人车协同避障的关键在于点云数据的采集、传输、解析及实时应用,以下是技术实现的分步解析: 1. 点云数据采集(无人机端) 传感器选择: LiDAR:通过激光雷达获取高精度3D点云(精度达厘米…...
ComfyUI AnimeDiff动画参数总结
ComfyUI AnimeDiff动画参数总结 一、动画生成核心参数 参数名称建议值/范围作用说明备注步数(Steps)15-25控制AI计算迭代次数,越高细节越精细,但耗时更长推荐20步,显存不足可降至15步CFG值7.0-8.5提示词对画面的控制…...
No manual entry for printf in section 3
问题描述 在尝试查看 printf 的 C 函数手册页(即 man 3 printf)时遇到了 “No manual entry for printf in section 3” 的错误信息。 解决方案 出现这问题,是由于系统上没有安装对应的部分的手册页,因此安装对应的部分的手册…...
React 之 Redux 第二十八节 学习目标与规划大纲及概要讲述
接下来 开始Redux 全面详细的文档输出,主要基于一下几个方面,欢迎大家补充指正 一、Redux 基础概念 为什么需要 Redux? 前端状态管理的挑战(组件间通信、状态共享) Redux 解决的问题:集中式、可预测的状态…...
OSPF路由ISIS路由与路由学习对比(OSPF vs ISIS Routing Learning Comparison)
OSPF路由ISIS路由与路由学习对比 1.OSPF 路由学习规律 OSPF使用链路状态数据库(Link State Database)来存储网络拓扑信息。每个OSPF路由器通过交换链路状态更新(Link State Updates)来了解整个网络的拓扑,并根据收到…...
PMP项目管理—资源管理篇—1.规划资源管理
文章目录 基本信息4W1HITTO输入工具与技术输出 三种组织结构图和职位描述组织分解结构 OBS职责分派矩阵 RAMRACI矩阵说明 文本格式 资源管理计划团队章程 基本信息 4W1H what: 规划资源管理是定义如何估算、获取、管理和利用端对以及实物资源的过程。why: 资源规划用于确定和…...
Kafka 消息 0 丢失的最佳实践
文章目录 Kafka 消息 0 丢失的最佳实践生产者端的最佳实践使用带有回调的 producer.send(msg, callback) 方法设置 acks all设置 retries 为一个较大的值启用幂等性与事务(Kafka 0.11)正确关闭生产者与 flush() 方法 Broker 端的最佳实践设置 unclean.l…...
机器学习算法——回归任务
回归分析是估计因变量和自变量之间关系的过程。 目录 1、多元线性回归 2、岭回归 3、Lasso回归 4、弹性网络回归 5、多项式回归 6、指数回归 7、自然对数回归 8、广义线性模型 GLM 9、Cox比例风险模型 10、决策树回归 11、随机森林回归 12、梯度提升回归 13、XGBoost回归 14、…...
【数据库】数据库基础
第一章 数据库基础 一、数据库基础1.1 数据库系统的体系结构 (三层模式两级映像)1.1.1 逻辑模式1.1.2 外模式1.1.3 内模式1.1.4 外模式/模式映象1.1.5 逻辑模式/内模式映象1.1.6 逻辑独立性1.1.7 物理独立性 1.2 数据模型 一、数据库基础 1.1 数据库系统…...
端到端自动驾驶——cnn网络搭建
论文参考:https://arxiv.org/abs/1604.07316 demo 今天主要来看一个如何通过图像直接到控制的自动驾驶端到端的项目,首先需要配置好我的仿真环境,下载软件udacity: https://d17h27t6h515a5.cloudfront.net/topher/2016/November…...
深度学习R8周:RNN实现阿尔兹海默症(pytorch)
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 数据集包含2149名患者的广泛健康信息,每名患者的ID范围从4751到6900不等。该数据集包括人口统计详细信息、生活方式因素、病史、临床测量、认知和功…...
vuex中的state是响应式的吗?
在 Vue.js 中,Vuex 的 state 是响应式的。这意味着当你更改 state 中的数据时,依赖于这些数据的 Vue 组件会自动更新。这是通过 Vue 的响应式系统实现的,该系统使用了 ES6 的 Proxy 对象来监听数据的变化。 当你在 Vuex 中定义了一个 state …...
从老式万用表到精密测量:双积分ADC如何用‘慢’换来‘准’?选型避坑指南
从老式万用表到精密测量:双积分ADC如何用‘慢’换来‘准’?选型避坑指南 在仪器仪表和传感器信号调理领域,精度与速度的权衡一直是硬件工程师面临的核心挑战。当我们处理温度、压力或称重传感器等低频高精度信号时,传统的SAR和Σ…...
更全面的 Token 套餐来了:Agent Plan
作为一名 Token 消耗大户,各模型厂商和云厂商的套餐我基本都有入手:智谱、MiniMax、小米 Mimo,以及最早推出 Coding Plan 的火山引擎,这些都是我目前在订的。以前 Coding Plan 基本能够覆盖日常工作,但是随着越来越多场…...
Redis分布式锁进阶第六十一篇
一、本篇前置衔接 第九十二篇我们完成Redisson源码拆解、手写复刻、底层内核穿透,彻底明白分布式锁代码层、脚本层、线程层原理。到此为止,代码、源码、坑点、运维、监控、面试全部讲透。但很多开发最大的困惑依旧存在:不同体量公司为什么锁架…...
北京理工大学:数据中心节能降碳之算电协同——背景、技术、实践和展望 2026
这份由北京理工大学 2026 年初发布的《数据中心节能降碳之算电协同:背景、技术、实践和展望》报告,围绕算电协同,从背景、技术、实践、展望四方面系统分析,核心是推动算力与电力、热力深度融合,助力数据中心节能降碳、…...
SD-PPP终极秘籍:在Photoshop中直接召唤AI助手的实战宝典
SD-PPP终极秘籍:在Photoshop中直接召唤AI助手的实战宝典 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 你是否曾为了给设计作品添加AI特效,不得不在Photoshop和AI工具间来回切换、导出导入…...
终极指南:3步掌握FakeLocation应用级虚拟定位保护隐私
终极指南:3步掌握FakeLocation应用级虚拟定位保护隐私 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 你是否担心手机应用过度获取你的真实位置?想不想为微…...
如何用3步将B站视频变成文字稿?这个智能转录工具让你告别手动记录
如何用3步将B站视频变成文字稿?这个智能转录工具让你告别手动记录 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾经为了记录一个B站视频…...
从样本到序列:枸杞DNA条形码鉴定的关键步骤与陷阱规避
一、引言:为何需要PCR鉴定枸杞?枸杞(Lyciumspp.)作为药食同源的重要资源,市场长期存在以土库曼枸杞、白刺等近缘种或伪品冒充高价值宁夏枸杞(L. barbarum)的现象。传统鉴别依赖果实形态和显微特…...
Linux下MT7601 USB无线网卡驱动编译与网络配置全攻略
1. 项目概述:从零构建一个可用的USB无线网卡最近在折腾一个基于老旧工控板的自制家庭服务器项目,手头正好有一块闲置的、芯片方案为MT7601的USB无线网卡。在Linux系统下,这类第三方芯片的网卡往往不像Intel、Realtek那样有完善的内核原生支持…...
深入LAN8720A硬件设计:从REF_CLK模式选择到SMI地址配置,如何为STM32的LWIP DHCP稳定运行打好基础
嵌入式网络硬件设计实战:LAN8720A与STM32的协同优化策略 在嵌入式系统开发中,网络功能的稳定性往往取决于硬件设计与软件配置的完美配合。当工程师面对LWIP协议栈下DHCP功能不稳定、网络时断时续的问题时,很容易将注意力集中在软件调试上&am…...
