news 2026/6/15 3:39:19

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/6/13 6:05:01

计算机毕业设计|基于springboot + vue校园外卖系统(源码+数据库+文档)

校园外卖 目录 基于springboot vue校园外卖系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue校园外卖系统 一、前言 博主介绍:✌️大…

作者头像 李华
网站建设 2026/6/12 22:24:56

AI赋能盾构隧道巡检开启基建安全新篇章,基于最新端到端范式YOLO26全系列【n/s/m/l】参数模型开发构建AI隧道盾构场景下盾构管壁缺陷病害异常检测预警系统

在当今交通网络日益发达的时代,涵洞隧道作为交通基础设施的关键组成部分,其重要性不言而喻。它们宛如城市脉络中的隐秘通道,保障着车辆与行人的顺畅通行。而在隧道等基建施工建设过程中,工程质量监管是重中之重,直接关…

作者头像 李华
网站建设 2026/5/21 1:25:18

非遗文化传承网站

非遗文化传承网站 目录 基于springboot vue非遗文化传承网站系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue非遗文化传承网站系统 一、前言 博…

作者头像 李华
网站建设 2026/6/1 6:01:24

GESP认证C++编程真题解析 | B4354 [GESP202506 一级] 假期阅读

​欢迎大家订阅我的专栏:算法题解:C与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选…

作者头像 李华
网站建设 2026/6/8 10:47:23

利用开源监控工具构建轻量级Petrel的license使用看板

利用开源监控工具构建轻量级Petrel的License使用看板作为一名长期负责企业IT运维和资源管理的部门经理,我在日常工作中经常遇到一个棘手的问题:如何在不依赖昂贵商用软件的前提下,实时、精准地监控我们系统中Petrel(石油勘探与开发…

作者头像 李华