| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存 -> 正文阅读 |
|
[网络协议]《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存 |
????系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译 《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析 《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析 《ZLToolKit源码学习笔记》(4)工具模块之消息广播器 《ZLToolKit源码学习笔记》(6)线程模块之整体框架概述 《ZLToolKit源码学习笔记》(7)线程模块之线程池组件:任务队列与线程组 《ZLToolKit源码学习笔记》(8)线程模块之线程负载计算器 《ZLToolKit源码学习笔记》(9)线程模块之任务执行器 《ZLToolKit源码学习笔记》(11)线程模块之工作线程池WorkThreadPool 《ZLToolKit源码学习笔记》(12)事件轮询模块之整体框架概述 《ZLToolKit源码学习笔记》(13)事件轮询模块之管道的简单封装 《ZLToolKit源码学习笔记》(14)事件轮询模块之定时器 《ZLToolKit源码学习笔记》(15)事件轮询模块之事件轮询器EventPoller 《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述 《ZLToolKit源码学习笔记》(17)网络模块之基础接口封装类SockUtil 《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存(本文) 前言对原始数据char* data进行封装,提供不同的数据访问方式,用于TCP与UDP的数据收发。 目录一、概述?Buffer:缓存抽象基类。有两个虚函数,data和size,前者获取数据指针,后者获取数据长度,派生类需要实现这两个函数。仅通过data拿到char*时,不要直接就访问数据,因为数据可能是二进制的(不能以\0判断结尾)。std::string是可以存储二进制数据的,初始化时需要使用string(char*,int count),指定长度后不会以\0结束。 BufferOffset:基于原始数据进行偏移,截取指定长度的数据。从代码中的使用来看,由于offset和len都用的默认值,所以该类等价于直接使用std::string。
BufferRaw:单例类,通过create静态函数返回一个自身的智能指针对象。 BufferLikeString:类似std::string,主要是为了提高内存使用率,避免频繁申请内存。但感觉这个类没啥作用,直接使用std::string完全可以。理解该类主要看下三个成员变量:
BufferSock:将Buffer和网络通信地址信息sockaddr关联起来。 BufferList:是BufferSock的友元类。接受一个Buffer的list,并提供了发送list中数据的send接口。
?send在发送UDP数据时,Buffer的实例化对象只能是BufferSock,因为会用到BufferSock中的sockaddr信息。发送TCP数据的话,则不限制具体的类型,因为用到的fd之前已经connect了。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:48:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |