【发布时间】:2018-02-18 07:55:15
【问题描述】:
Beast websocket 示例将数据存储在多缓冲区中:
该实现使用一个或多个字符数组的序列 大小不一。附加字符数组对象 适应字符大小变化的序列 顺序。
查看界面时,我并不完全清楚它是如何工作的。如果我阅读描述,它可以被视为一个缓冲区数组。但似乎输出只是一块数据。这是否意味着“一个或多个数组”只适用于内部结构?
在示例代码中,数据被读入缓冲区如下:m_websocketStream.async_read(m_buffer.....
每个 async_read 操作是否都会创建一个新的内部缓冲区。
如果是这样,那另一端如何解释。例如。如何将其读入 std::string 或 std::vector。
查看源数据时,data() 返回 const_buffer_type,这是一个前向声明。
对于数据成员,帮助信息提供以下信息,帮助不大:
用于将输入序列表示为缓冲区列表的类型。 使用 const_buffers_type = implementation_defined;
定义似乎来自包含的头文件 boost/asio/buffer.hpp。然而,整体结构对我来说有点令人困惑。
我只是想了解如何将数据处理为字节或将其转换为 std::string。
尝试了以下方法,但这也是不允许的:
std::string( boost::asio::buffer_cast<const char*>(m_buffer.data())
,boost::asio::buffer_size(m_buffer.data()) );
谁能给我一点启示?
【问题讨论】: