boost::serialize(序列化)和boost::deserialize(反序列化)类对象型数据并通过socket网络传输

本文探讨在自动驾驶领域如何利用boost::serialize和boost::deserialize进行序列化和反序列化,以实现激光雷达数据通过socket在网络中的高效传输。文中对比了非序列化传输的缺点,并详细介绍了侵入式序列化的方法,以及socket通信的相关代码示例。
摘要由CSDN通过智能技术生成
***[欢迎访问我的个人博客: $zengzeyu.com$](zengzeyu.com)***

前言


![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMDAyODA1OC02Njg2YjcxNzQyNjA4NjlhLnBuZw?x-oss-process=image/format,png) 用户界面显示后台处理结果

在自动驾驶领域,激光雷达与主机通过网线连接,实现二者的实时通信(主要是激光雷达发送扫描数据到主机)。同时,在接收到雷达数据之后,后台处理系统到前端用户显示界面,也需要通过上述方法进行通信,因为后台处理系统一般都不自带显示器,例如PX-2,TX2等平台就提供网线接口。
本文以速腾聚创公司16线激光雷达生成数据,处理后台系统处理后点云为例,进行分割分类数据传输到前端用户界面进行显示。
主要用到了以下两个方面:

  • boost::serialize 和 boost::deserialize 函数
  • socket sendto() 和 recvfrom() 函数

本文首先介绍不使用boost序列化方法进行传输方法,之后再介绍boost序列化方法进行数据传输的方法。主要梳理boost::serialize(序列化)和boost::deserialize(反序列化)相关内容,socket部分稍作介绍。关于二者的相关知识链接,请参阅底部参考文献。

1. 非序列化数据传输方法


1.1 数据类格式

非序列化数据传输方法中数据类表示如下:

struct CommunicationMsg
{
    Header header;
    PoseMsg pose;
    char perceptions[20000];
}

headerpose为另外的数据类,perceptionschar型数据容器。在非序列化方法下,将CommunicationMsg通过socket进行传输时,必须保证接收端的CommunicationMsg也必须为同样的数据顺序格式,即headerposeperceptions三者顺序以及结构必须保持一致。

1.2 发送端代码

非序列化发送端代码如下:

bool sendMsg(const std::vector<PerceptOutput> &datas, const Header &header, const PoseMsg &pose)
{
  CommunicationMsg send_msg;
  send_msg.header = header;
  send_msg.pose = pose;
  std::vector<PerceptResultMsg> msgs = con---
title: boost::serialize(序列化)和boost::deserialize(反序列化)类对象型数据并通过socket网络传输
date: 2018-05-02 22:55:54 
categories: BOOST
tags: 
    - socket
    - boost
    - c++
---vertToMsg(datas);

    /// origin send
  std::string tmp_string = toString(msgs);
  send_msg.header.length = static_cast<int>(tmp_string.size());
  for(int i = 0; i < static_cast<int>(tmp_string.size()); ++i)
  {
      send_msg.p
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值