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/15 0:07:03

Socket 编程客户端篇:Connect 连接与数据发送实战

一、 客户端的核心动作:Connect 在 TCP 握手过程中,服务器是被动打开(Passive Open),而客户端是主动打开(Active Open)。发起这个“主动”动作的函数就是 connect。 1. 函数原型 int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd:客…

作者头像 李华
网站建设 2026/6/11 6:26:09

springboot旅游管理系统(11704)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/6/10 18:21:39

校园实验室管理系统

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

作者头像 李华
网站建设 2026/6/5 14:20:16

基于springboot + vue校园外卖系统

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

作者头像 李华
网站建设 2026/6/12 16:40:28

在可控 AI 逻辑下,做 AI 量化高质量因子实战(4)

—— 当失败被制度化之后,人类在系统中还剩下什么职责一、这是因子实战的终点,也是系统工程的起点走到第三篇,其实“因子实战”已经被结构性耗尽了。不是因为没东西可写, 而是因为一旦你完成了以下三件事:否定未经裁决…

作者头像 李华