在Boost Asio缓冲区中打包struct

Dri*_*ies 5 c++ boost boost-asio

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

例如,是否可以将填充结构中的数据发送到服务器或客户端?如果是,我该怎么做才能做到这一点,因为我找不到相关的文档.

seh*_*ehe 5

您可以按位复制POD对象.

事实上,短耳接受升压/ STD array<T, N>,T[]vector<T> 只要T是一个POD结构缓冲器.

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

最后,对Boost Spirit中的二进制文件(二进制双字(big-endian/little-endian),二进制浮点数)有一些支持.

更新示例:

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

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

    auto mutable_buffer = boost::asio::buffer(arr);
}
Run Code Online (Sandbox Code Playgroud)

看到Live On Coliru