asio的buffer

news/2024/9/21 22:51:09

ASIO的buffer理解

asio的buffer结构

任何网络库都有提供buffer的数据结构,这个就是收发数据的缓冲区。

asio提供了mutable_buffer 和 const_buffer这两个结构,他们都是一段连续的空间,首字节存储了后续数据的长度。mutable_buffer用于写服务,const_buffer用于读服务。但是这两个结构都没有直接的api可以调用。asio提出了MutableBufferSequence和ConstBufferSequence的概念,他们是由多个mutable_buffer和const_buffer组成的。我们可以理解为MutableBufferSequence的数据结构为vector<mutable_buffer>,结构如下

image-20240921222731672

如图所示每个vector存储的都是mutable_buffer的地址,这么复杂的数据结构交给用户使用显然是不合适的,因此asio提出了buffer函数,该函数接收多种形式的字节流,返回mutable_buffers_1 或者const_buffers_1结构的对象。const_buffers_1和mutable_buffers_1是mutable_buffer和const_buffer的适配器,提供了符合MutableBufferSequence和ConstBufferSequence概念的接口,所以他们可以作为asio的api函数的参数使用。

简单概括一下,我们可以用buffer()函数生成我们要用的缓存存储数据。
比如boost的发送接口send要求的参数为ConstBufferSequence类型,我们发送"hello world"字符串时,我们需要将”Hello Word转化为该类型”,最终buffer函数返回的就是可以传递给发送接口send的类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

格林公式7

例1 计算积分 \[I=\int_Cx^2ydx-xy^2dy, \]其中C是上半圆 \(\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned}\) 逆时间方向 \[\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned} \]考虑到上半…

9.21 abc372f

容易发现平移操作,都是 \(to\) 向左平移。然后更新完了过后,\(x\) 再左移。 当然 dp 数组整体是左移的。 本题一个重点就是,假设整个 dp 不动,让我们的操作反着动。

基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量

1.算法仿真效果 matlab2017b仿真结果如下(完整代码运行后无水印):本程序系统是《m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量》的的升级。升级前原文章链接增加了运动节点的路由测试,包括定向运动,随机运动,静止…

笛卡尔坐标张量简介7

张量(tensor) 这一术语最初是用来描述弹性介质各点应力状态的,后来发展成为力学和物理学的一个有力数学工具,目前力学方面的理论性文献都不同程度地这用了这一工具 由坐标原点和三条不共面的标架直线构成的坐标系称为直线坐标系,如果三标架直线上的单位尺度相同,称为笛卡…

尝试RVC音色克隆团长音色

前言 昨晚玩剑网3突发奇想,把团长声音克隆下来,利用语音喵制作成语音DBM。 这样不管团长开不开团,打团也能有团长声音听了诶嘿嘿。 于是当场关闭游戏声音录了打本的素材,本文就边做边记录。 下载 在B站找到了这个教程: 【你的声音,现在是我的了!】https://www.bilibili.…

隐私保护体系下网络威胁情报共享的研究现状和方案设计

来源:http://netinfo-security.org/article/2024/1671-1122/1671-1122-24-7-1129.shtml威胁情报 网络威胁情报是关于网络中正在进行的或潜在的恶意活动信息,涵盖但不限于特定的恶意软件样本、恶意IP地址、钓鱼电子邮件信息、黑客组织的入侵行为等内容,对于提前感知预警、防范…

Logisim-013-◇汉字显示

转码在线工具地址 https://www.23bei.com/tool/54.html#仓库地址 https://gitee.com/gitliang/logisim-to-cpu

spring6.1在java17环境下使用反射

引包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>3.3.4</version> </dependency> 反射代码编写简单的反射方法,如下所示 package com.lw.reflect.c…