c++ - 在 Boost Asio 缓冲区中打包结构

标签 c++ boost boost-asio

我正在寻找一种通过带有 Boost Asio 的套接字发送由自定义数据结构组成的数据包的方法。目前我知道你可以发送一个带有标准 boost asio 缓冲区的字符串(在 boost::asio::write(..) 方法中)。

例如,是否可以将数据从填充的结构发送到服务器或客户端?如果是,我需要怎么做,因为我找不到关于此的文档。

最佳答案

您可以按位复制 POD 对象。

事实上,只要 T 是 POD 结构,Asio 就接受 boost/std array<T, N>T[]vector<T> 缓冲区。

否则,您可以使用 Boost Serialization 来序列化您的数据。

最后,Boost Spirit 对二进制文件(二进制双字 (big-endian/little-endian)、二进制 float )提供了一些支持。

更新示例:

#include <memory>
#include <boost/asio.hpp>

int main()
{
    struct { float a, b; } arr[10];

    auto mutable_buffer = boost::asio::buffer(arr);
}

Live On Coliru

关于c++ - 在 Boost Asio 缓冲区中打包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868875/

相关文章:

c++ - 将 boost lambda 与复合表达式一起使用

c++ - 使用 boost::spirit 匹配单词

c++ - boost::asio 挂起_endthreadx

c++ - 类型转换泛型类型 C++

c++ - Boost 单元测试内存重用导致本应无法通过的测试

c++ - 创建友元模板函数时出现意外错误

c++ - 如何使主函数可以访问函数中的变量?

c++ - 使用 boost asio 编译项目时出错

c++ - 从 const char* 创建一个streambuf?

c++ - 侵入式或非侵入式