news 2026/4/18 3:37:44

Socket 编程实战:数据的接收发送与内核缓冲区揭秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程实战:数据的接收发送与内核缓冲区揭秘

一、 数据的“中转站”:内核缓冲区

在 Socket 编程中,你以为你是在跟网络对话,其实你只是在跟操作系统的内存对话。

1. 双缓冲机制

每个建立连接的 Socket(即通信文件描述符cfd),在内核中都有两块专属内存:

  • 读缓冲区 (Read Buffer):网卡收到的数据,操作系统会先搬到这里,等着你去read
  • 写缓冲区 (Write Buffer):你调用write发送的数据,其实是先抄到这里,然后操作系统会在合适的时候帮你发出去。

2. 读写函数的本质

  • write(cfd, "hello", 5)

    • 动作:把应用层的 “hello”拷贝到内核的写缓冲区。
    • 耗时:极快(纯内存操作)。
    • 注意:函数返回成功,只代表数据进了缓冲区,不代表对方收到了
  • read(cfd, buf, 1024)

    • 动作:去内核的读缓冲区看看有没有数据。
    • 阻塞:如果缓冲区是空的,read就会让程序暂停(阻塞),直到有数据送达。
    • 非对等性:对方一次发了 4KB,你可以分 40 次,每次读 100 字节。这就是TCP 面向流 (Stream)的特性。

二、 函数对比:Read/Write vs Recv/Send

在 Linux 网络编程中,有两套常用的读写函数。

1. 标准文件 IO (read/write)

ssize_tread(intfd,void*buf,size_tcount);ssize_twrite(intfd,constvoid*buf,size_tcount);
  • 特点:通用性强,不仅用于 Socket,也用于读写文件、管道等。

2. Socket 专用 IO (recv/send)

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

VirtualLab Fusion应用:畸变分析仪

摘要镜头是成像系统设计的一个组成部分。因此,对任何光学工程师来说,能够详细分析它们的性能是至关重要的。一个众所周知的不利影响是畸变,它导致光束的横向位置相对于焦平面的参考位置的偏差。在这个使用案例中,我们介绍了一个工…

作者头像 李华
网站建设 2026/4/18 3:31:05

HoRain云--Python量化回测:框架选择与实战指南

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华
网站建设 2026/4/17 23:29:17

基于vue动漫交流与推荐平台系统

动漫交流与推荐平台 目录 基于springboot vue动漫交流与推荐平台系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue动漫交流与推荐平台系统 一、…

作者头像 李华
网站建设 2026/4/18 3:35:28

实时协同 + 多人评论!SpreadJS V19.0 重新定义团队表格协作

实时协同 多人评论!SpreadJS V19.0 重新定义团队表格协作 在数字化转型加速的今天,远程办公渗透率已超 40%,表格作为企业数据协同的核心载体,广泛应用于预算编制、项目管理、数据汇总等关键场景。但传统“单人编辑-邮件传输”的…

作者头像 李华
网站建设 2026/4/17 6:46:18

“创新”对您来说意味着什么?

尽管大多数公司高层一致认同应当加大创新力度,但每个人对 “创新” 二字的理解却大相径庭。比如信息技术部门正在投资开发新的信贷审批技术 —— 这算不算创新?另一个业务是对本地一家金融科技企业进行了小额股权投资 —— 他们是否应该加大这类投入&…

作者头像 李华
网站建设 2026/4/17 16:15:49

【Java毕设全套源码+文档】基于springboot的智能停车计费系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华