接收缓冲区、发送缓冲区、读状态、写状态他们之间的关系

embedded/2025/2/16 1:52:46/

接收缓冲区:

  • 位于接收端(通常是服务端或客户端)的套接字中的缓冲区,用于暂存来自发送端的数据。
  • 当发送端发送数据时,数据首先到达接收端的接收缓冲区。

发送缓冲区:

  • 位于发送端(通常是服务端或客户端)的套接字中的缓冲区,用于暂存即将发送的数据。
  • 当发送端准备发送数据时,数据会被放入发送缓冲区。

读状态(EPOLLIN):

  • 标记为“可读”状态意味着接收端的接收缓冲区中有数据可供读取。
  • 通常用于接收数据。

写状态(EPOLLOUT

  • 标记为“可写”状态意味着发送端的发送缓冲区有足够的空间来发送数据,并且接收端的接收缓冲区有足够的空间来接收数据。
  • 通常用于发送数据。

具体解释

1. 发送数据

假设服务端(A)需要发送数据给客户端(B):

  • 服务端A

    • 将数据放入发送缓冲区。
    • 关注客户端B连接的写状态(EPOLLOUT),以确认客户端B的接收缓冲区有足够的空间来接收数据。
    • 当客户端B的接收缓冲区有足够的空间时,服务端A可以发送数据。
  • 客户端B

    • 接收数据时,关注服务端A连接的读状态(EPOLLIN),以确认服务端A有数据可以读取。
    • 当服务端A发送数据后,客户端B的接收缓冲区将包含这些数据,此时客户端B可以通过读操作获取这些数据。
2. 接收数据

假设客户端(B)需要接收数据:

  • 服务端A

    • 发送数据到客户端B时,数据会先进入客户端B的接收缓冲区。
    • 客户端B需要关注服务端A连接的读状态(EPOLLIN),以确认服务端A有数据可以读取。
  • 客户端B

    • 从接收缓冲区读取数据。
    • 通过读操作获取数据。

总结

就有点绕,从常识来讲,服务端往客户端发送数据,一般会觉得服务端是写状态,客户端是读状态,这里的状态是指可读、可写,不是写和读,这样就好理解了。

读状态就是确保有数据,写状态就是确保有地方接受数据。

http://www.ppmy.cn/embedded/119060.html

相关文章

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】 16.1 加速失效时间回归 1.算子介绍 加速失效时间回归模型Accelerated failure time (AFT)是一个监督型参数化的回归模型,它可以处理删失数据。它描述了一个生存时间的对数模型,所以它通…

Spring Boot入门指南

目录 1. 什么是Spring Boot? 2. Spring Boot的核心特性 3. 为什么选择Spring Boot? 4. Spring Boot项目搭建 4.1 使用Spring Initializr快速生成项目 4.2 使用Maven构建Spring Boot项目 5. 构建一个简单的Spring Boot Web应用 5.1 控制器&#xf…

【2023工业3D异常检测文献】PointCore: 基于局部-全局特征的高效无监督点云异常检测器

PointCore: Efficient Unsupervised Point Cloud Anomaly Detector Using Local-Global Features 1、Background 当前的点云异常检测器可以分为两类: (1)基于重建的方法,通过自动编码器重建输入点云数据,并通过比较原…

centos离线安装nvm

​​​​​​​ 在一个可以访问互联网的机器上,访问NVM的GitHub页面:GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions。 下载最新版本的NVM脚本。通常,你可以点击“…

全新一区PID搜索算法+TCN-LSTM+注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab)

全新一区PID搜索算法TCN-LSTM注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab) 目录 全新一区PID搜索算法TCN-LSTM注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab)效果一览基本…

13年408计算机考研-计算机网络

第一题: 解析:OSI体系结构 OSI参考模型,由下至上依次是:物理层-数据链路层-网络层-运输层-会话层-表示层-应用层。 A.对话管理显然属于会话层, B.数据格式转换,是表示层要解决的问题,很显然答案…

大模型微调方法(非常详细),收藏这一篇就够了!

引言 众所周知,大语言模型(LLM)正在飞速发展,各行业都有了自己的大模型。其中,大模型微调技术在此过程中起到了非常关键的作用,它提升了模型的生成效率和适应性,使其能够在多样化的应用场景中发挥更大的价值。 那么&…

Spring注解开发

优点&#xff1a;简化代码 创建新项目一定要配置maven 注解 过程 图 1.创建模块导入坐标 新建模块 选择路径 点击确定生成 导入坐标 <!-- 导入坐标--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>s…