UDP服务端收发流程

UDP 收发流程

一个 UDP socket 对应:

  • 一个接收缓冲区
  • 一个发送缓冲区

收消息

  1. 客户端发数据 → 网络传输
  2. 服务端内核收到
  3. 内核把数据包放进 接收缓冲区
  4. 应用程序调用 recvfrom 从里面读出来

发消息

  1. 应用程序调用 sendto 把数据交给内核
  2. 数据先进入 发送缓冲区
  3. 内核接管,从缓冲区取出,打包发往网络

  • 收:内核 → 接收缓冲区 → 应用
  • 发:应用 → 发送缓冲区 → 内核

不管多少个客户端,共用这一对缓冲区,内核负责排队,你只管读写。

多个客户端"同时发" 会不会冲突?

不会!!!

  • 操作系统内核会维护接收缓冲区
  • 客户端 1 发 → 进缓冲区
  • 客户端 2 发 → 也进缓冲区
  • 客户端 3 发 → 还进缓冲区

说明:结合前面所说,所有客户端发的消息都在同一个缓冲区里放着。

服务端 recvfrom()一个一个取的。

可以理解成:

多个客户端同时寄信,邮局不会把信搞混,服务端一封一封收。

关键:UDP 是 "无连接" 的

服务端不需要区分 "哪个客户端",

它只关心:

  • 这是谁发的(IP: 端口)
  • 发了什么内容

所以:1 个服务端 socket = 可以处理无限个客户端

这就是 UDP 高性能、适合游戏、视频、实时消息的原因。

相关推荐
无人生还别怕13 分钟前
如何制作一个linux标准iso镜像
linux·iso·opencloudos·openanolisos
2401_841495648 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
Yana.nice8 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
fqbqrr8 小时前
2607C++,soui与安卓
c++·soui
DFT计算杂谈12 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
fqbqrr12 小时前
2607C++,使用微软detours勾挂工具
c++
Zhang~Ling13 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind13 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的森13 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
XMAIPC_Robot14 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发