发布时间:2026/9/1 6:46:05
Linux网络编程‑UDP学习笔记 一、网络协议模型1. OSI 七层模型应用层要传输的业务数据表示层数据加密、编码转换会话层建立/维护会话链接传输层选择传输方式代表协议TCP、UDP网络层路由选择数据走哪条路径IP 协议数据链路层局域网内部传输MAC 地址物理层网线、网卡等物理硬件介质2. TCP/IP 四层模型实际 Linux 使用应用层业务数据HTTP、HTTPS、FTP、DNS、TFTP传输层选择传输协议 TCP / UDP网络层IP实现跨主机寻址路由网络接口层网卡硬件、驱动处理帧传输层两大协议对比UDP 用户数据报协议无连接通信前不需要握手不可靠内核不做重传确认头部只有 8 字节开销小速度快使用函数socket() sendto() recvfrom()TCP 传输控制协议面向连接三次握手建立连接四次挥手断开可靠传输应答确认、丢包重传、去重拥有滑动窗口、拥塞控制、掉线检测资源开销大二、IPv4 地址基础IP 地址构成IP 网络位 主机位网络位局域网编号同一个局域网所有主机网络位相同主机位局域网内部区分不同主机示例192.168.0.175网络号192.168.0.0广播地址网络位不变主机位全部置 1 →192.168.0.255向局域网所有主机发消息局域网内部通信依靠MAC 地址跨网段通信依靠 IP 地址。子网掩码子网掩码用来区分网络位和主机位二进制1→ 对应 IP 的网络位二进制0→ 对应 IP 的主机位例255.255.255.0简写192.168.0.175/24IP 地址分类分类范围用途私有网段A 类1.0.0.0‑126.255.255.255超大型网络10.0.0.0‑10.255.255.255B 类128.0.0.0‑191.255.255.255大中型网络172.16.0.0‑172.31.255.255C 类192.0.0.0‑223.255.255.255中小型局域网192.168.0.0‑192.168.255.255D 类224‑239组播广播‑E 类240‑255实验保留‑公有 IP公网可直接访问私有 IP仅局域网内部使用不能直接上互联网。三、VMware 两种网络模式NAT 模式Windows 主机上网虚拟机就可以上网Ubuntu 的 IP 是虚拟机虚拟出来的 IP外部机器无法主动访问虚拟机虚拟机可以访问外面适合开发上网不适合做服务器测试桥接模式虚拟机和物理主机处于同一个局域网分配同网段真实局域网 IP外部主机、同局域网其他设备可以访问 Ubuntu 虚拟机做网络编程UDP/TCP 套接字实验必须使用桥接模式网络编程踩坑NAT 模式下外部无法访问虚拟机的端口写 UDP 测试代码会收不到报文。Ubuntu 配置 IP 常用命令# 查看网卡信息ifconfigifconfig-a# 临时设置 IP重启失效sudoifconfigens33192.168.0.125/24 up# 配置文件修改 DHCP 自动获取 IPsudovim/etc/network/interfaces测试网络连通pingwww.baidu.com四、UDP 套接字核心 APIUDP 特点无连接通信收发都需要带上对方 IP 端口发送端socket→sendto→close接收端socket→bind→recvfrom→close1. socket 创建套接字intsocket(intdomain,inttype,intprotocol);domain协议族IPv4 填AF_INETtypeSOCK_STREAM→ TCPSOCK_DGRAM→ UDP 数据报protocol填 0 自动匹配协议返回值成功返回文件描述符失败返回‑12. sockaddr_in IPv4 地址结构体structsockaddr_in{sa_family_tsin_family;// 协议族 AF_INETin_port_tsin_port;// 端口号网络字节序structin_addrsin_addr;// IP 地址网络字节序};structin_addr{uint32_ts_addr;};注意网络通信统一使用大端字节序主机小端必须转换。3. htons 主机字节序转网络字节序uint16_thtons(uint16_thostshort);把本地 short 端口号转为网络大端。端口必须 htons千万不要忘记。4. inet_addr 字符串 IP 转网络字节序in_addr_tinet_addr(constchar*cp);把192.168.0.175字符串转为二进制网络大端 IP。5. inet_ntoa 网络 IP 转回字符串char*inet_ntoa(structin_addrin);二进制网络 IP → 打印可读的点分十进制字符串。6. sendto UDP 发送数据ssize_tsendto(intsockfd,constvoid*buf,size_tlen,intflags,conststructsockaddr*dest_addr,socklen_taddrlen);sockfdsocket 返回套接字buf发送缓冲区len发送字节长度flags一般填 0dest_addr目标对方地址强转为struct sockaddr *addrlen地址结构体大小返回值成功返回发送字节数失败返回 ‑1。UDPsendto 成功只代表交给内核不代表对方收到。7. bind 绑定 IP 端口接收端必须intbind(intsockfd,conststructsockaddr*addr,socklen_taddrlen);将套接字绑定本机 IP 端口UDP 接收端必须 bind别人才能向你的端口发数据。限制只能绑定本机自己的 IP端口被占用会绑定失败。8. recvfrom UDP 接收数据ssize_trecvfrom(intsockfd,void*buf,size_tlen,intflags,structsockaddr*src_addr,socklen_t*addrlen);接收 UDP 数据包同时拿到发送方的 IP 和端口src_addr输出参数保存发送者地址addrlen传入地址结构体长度的指针返回值成功返回收到字节数0 代表对端关闭‑1 出错。五、UDP 开发踩坑总结字节序端口一定要htons()转换忘记则端口错乱收不到包。模式网络实验虚拟机优先桥接模式NAT 模式外部无法访问虚拟机端口。发送端 UDP不需要 bind接收端必须 bind 绑定端口。sendto每次发送必须填写目标地址recvfrom会自动拿到发送方地址。UDP 不可靠丢包不会返回错误sendto 成功不等于对方收到。IP 填写要写对方真实局域网 IP注意防火墙。

相关新闻

2026/9/1 6:41:05

ComfyUI模特姿势更换:ControlNet与LoRA实战攻略

简介:面向 Stable Diffusion 用户的 ComfyUI 模特姿势更换项目源码,适合正在学习节点式图像生成工作流、希望快速实现商品模特换姿或数字艺术创作的开发者。压缩包体积仅 6KB,共 3 个文件,包含 InsCode 配置、HTML 展示页与 Git 忽…

2026/9/1 6:41:05

C++与Dear ImGui实现Live2D虚拟形象:视线追踪与交互开发实践

最近在做一个桌面虚拟形象项目时,把纯 C/C、Dear ImGui、Live2D 三条技术路线完整打通了。模型可以跟随摄像头视角转动眼球,会自然眨眼,用鼠标或触摸屏点击头部、身体时还能触发对应动作。整个过程没有用脚本语言,也没有引入 Unit…

2026/9/1 6:41:05

工业自动化视觉引导抓取系统:从原理到模块化封装实践

这次我们来看一个工业自动化领域的实用项目:视觉引导三轴定位抓取。这个项目的核心不是复杂的算法理论,而是如何将视觉识别、坐标定位和机械臂控制这三个关键环节,封装成一个稳定、易用、可复用的软件模块。对于从事自动化设备开发、机器人集…

2026/9/1 6:56:06

APF仿真完整攻略:IP-IQ谐波检测与双闭环控制

电力电子仿真(七十六)【独家】全网最全基于IP-IQ谐波检测方法的电压电流双闭环控制的并联型有源电力滤波器(APF)仿真研究(仿真模型讲解设计报告)做电力电子仿真的人,十有八九都在APF&#xff08…

2026/9/1 6:56:06

MKVToolNix:无损操作MKV容器的终极指南与实战教程

如果你经常处理视频文件,特别是从网上下载的影视资源、录制的游戏视频,或者需要为视频添加多语言字幕、调整音轨,那么你一定遇到过这样的困扰:视频文件太大,想无损提取其中的某条音轨或字幕,却找不到合适的…

2026/9/1 6:56:06

Halcon3D点云平面矫正:从倾斜到水平面的完整流程

简介:一份面向机器视觉开发者的Halcon 3D倾斜平面矫正与夹角计算程序包,解决立体相机或深度相机采集到的倾斜点云数据需转正至水平面的工程问题。程序基于Halcon的FitPlane运算符完成平面拟合,输入3D点云后自动计算平面法线与水平面夹角&…

2026/9/1 6:56:06

Claude自主对齐实验落地:用AI自动化评估LLM输出质量

最近在 AI 研究社区里,一个关于“让模型自己研究 AI 对齐”的实验结果引发了不小的讨论:通过合适的任务设计和评估流程,Claude 在“对齐其他模型”的任务上表现了接近甚至超过人类研究员的水平——在一些公开对比中,参与实验的 28…

2026/9/1 6:56:06

结构方程模型SEM结果解读:测量模型与结构模型评价

结构方程模型分析结果解读一、方法概述结构方程模型(Structural Equation Modeling, SEM)是一种融合因子分析与路径分析的多元统计方法,能够同时估计潜变量之间的结构关系以及观测变量与潜变量之间的测量关系。该方法通过构建理论模型与样本协…

2026/9/1 6:51:06

商业拍卖市场加速,专业服务成存量盘活关键

商业拍卖市场加速扩容 专业服务能力成存量盘活关键 近年来,随着国内存量资产规模持续扩大与司法拍卖、破产资产处置需求激增,商业拍卖市场迎来快速增长。数据显示,主流网络拍卖平台累计法拍成交已超3万亿元,其中法拍房成交超100万…

2026/8/31 1:05:20

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/31 2:14:20

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/31 1:41:28

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…