Linux网络编程‑UDP学习笔记

发布时间:2026/10/18 8:04:34

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/10/18 8:04:24

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

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

2026/10/16 14:52:36

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

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

2026/10/16 11:30:31

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

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

2026/10/18 8:02:26

C语言变量存储详解:内存分区、生命周期与static/extern

1. 变量存储这事儿,值得单独拿出来说说写C语言的人,几乎都背过“局部变量在栈上、全局变量在静态区、malloc在堆上”这句话,但一旦遇到实际问题,还是容易懵。你说它是基础知识吧,面试和工作中却总能碰到因为变量存储位…

2026/10/18 8:02:26

Django漫画插画管理系统开发全攻略:从数据模型到答辩

做Django这类管理系统课题的人非常多,但真正能把手头这个“django漫画插画管理系统”从选题走到源码、论文、答辩PPT全套交付的,远没有想象中那么顺。这个题目看起来是标准的“管理系统三件套”——增删改查、登录注册、权限分离,可一旦涉及漫…

2026/10/18 8:02:26

定制化Agent交付与运维的标准化实战指南

这两年代做 ToB 交付项目的人都深有体会,定制化 Agent 项目已经从"新鲜玩意"变成"甲方标配"。市面上谈 Agent 的都说宏大叙事,真落到交付现场,全是鸡毛蒜皮的溃败:需求边界像橡皮筋、模型效果飘忽不定、环境部…

2026/10/18 8:02:26

高压柔性输电系统6脉冲与12脉冲晶闸管控制HVDC仿真模型解析

直流输电从来都不是一个“趁着热点赶紧上手”的领域,我身边不少做电力电子的朋友,一开始接触高压直流输电系统(HVDC)时,最容易卡住的地方就是换流器拓扑。我见过太多人拿着6脉冲晶闸管模型反复调触发角,结果…

2026/10/18 8:02:26

定制化Agent项目交付标准化与运维体系建设实战指南

开年以来我已经不是第一次被问“你们那个 Agent 项目后来怎么收尾的了”。说实话,每次听到这种问题,我脑子里浮现的不是模型准确率,也不是某个 Prompt 调得漂不漂亮,而是半夜两点客户生产环境打来的电话。定制化 Agent 项目在 ToB…

2026/10/18 7:57:26

GitHub Pages + Hexo 搭建个人博客:从零到公网访问的完整指南

如果你正在纠结"要不要搭一个个人博客""到底用什么方案",我想先分享一个结论:GitHub Pages加Hexo这套组合,至今仍是我见过性价比最高的个人博客方案。我最早也试过租服务器跑动态站的路子,后来被续费、备份、…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑