上海网站搭建公司,动漫主题WordPress,wordpress主题去哪里找,企业商城网站多少钱1、前言背景
工作需要域间实现zmq通信#xff0c;刚开始需要比较简单的数据结构#xff0c;比如两个bool#xff0c;后面可能就需要传输比较大的数据#xff0c;所以记录下实现流程#xff0c;至于为啥选择proto数据结构去做大数据传输#xff0c;可能是地平线也用这个刚开始需要比较简单的数据结构比如两个bool后面可能就需要传输比较大的数据所以记录下实现流程至于为啥选择proto数据结构去做大数据传输可能是地平线也用这个那继续当cv工程师
2、protobuf源码编译
下载proto的编译源码 我比较喜欢源码编译 方便跟现有代码做兼容
Release Protocol Buffers v3.6.1 · protocolbuffers/protobuf · GitHub
proto 3.6.1是工作原有编译环境编译工具链的版本 所以也下载这个版本根据自己需要版本即可大同小异的东西
电脑环境安装不装执行会报错
udo apt-get update
sudo apt-get install g gcc cmake
sudo apt-get install autoconf
sudo apt-get install libtool
cd protobuf-3.6.1/ ./autogen.sh ./configure --prefix/home/qhr/Downloads/protobuf/install make (时间较长 等) make install 生成可执行文件在bin 头include和库lib在下面因为工具链里已经有了 就不需要 我们只要bin /protoc可执行文件就行去生成proto头文件
3、生成proto头文件
随便搞个数据结构 // 指定采用 proto3 语法 syntax proto3; // 相当于命名空间 package contacts; message PeopleInfo{ string name 1; //不是赋值而是指定唯一编号 int32 age 2; } install/bin/protoc --cpp_out. people.proto protoc编译工具 –proto_path指定 .proto 文件的检索路径可以多次指定指定。不指定默认在当前文件夹下检索。可以简写为 -I. –cpp_out指定编译后的文件类型为C DST_DIR指定文件的生活生成路径 file.proto指定要编译的 .proto 文件–proto_path 路径下的 执行后在本地生成people.pb.cc people.pb.h两个文件后面再用
或者定义一个稍微复杂的数据结构 syntax proto3; // 指定使用 proto3 语法 package myexample; // 定义包名避免不同项目之间的命名冲突 // Address message definition message Address { string street 1; string city 2; string state 3; string zip_code 4; string country 5; } // Person message definition, which includes an Address message Person { string name 1; int32 id 2; // Unique ID number for this person string email 3; // A person can have multiple addresses repeated Address addresses 4; } 在这个例子中
syntax proto3; 行指定了使用的语法版本为 proto3。这是最新的版本并且简化了某些规则。package myexample; 行定义了一个包名 myexample这有助于防止名称冲突特别是在大型项目或库中。Address 是一个消息类型它包含了街道、城市、州/省、邮政编码和国家等字段。Person 是另一个消息类型它除了包含人的姓名、ID 和电子邮件地址之外还有一个名为 addresses 的字段这个字段是一个 repeated 类型意味着它可以包含零个或多个 Address 实例。
4、zmq通信代码架构
不多逼逼 直接上代码 只剥离出一部分通信代码
zmq_subscriber.h #ifndef _ZMQ_SUBSCRIBER_H_
#define _ZMQ_SUBSCRIBER_H_#include iostream
#include chrono
#include iomanip
#include sstream#include memory
#include thread
#include functional
#include atomicnamespace 1121212
{
class zmq_subscriber
{
public:zmq_subscriber();~zmq_subscriber();void Init(std::string name, std::string ip_port, uint32_t timeout);void Start();void HandleZmqMessage();private:zmq::context_t context_;std::shared_ptrzmq::socket_t subscriber_ptr_;std::string zmq_name_;std::string ip_port_;uint32_t timeout_;std::shared_ptrstd::thread thread_ nullptr;zmq::pollitem_t items_[1];std::atomicbool running_{true};};} // namespace 22221212#endif //_ZMQ_SUBSCRIBER_H_zmq_subscriber.cpp
#include zmq_subscriber.hnamespace 121212
{zmq_subscriber::zmq_subscriber()
{}zmq_subscriber::~zmq_subscriber()
{std::cout zmq_subscriber class destruct std::endl;subscriber_ptr_-disconnect(ip_port_);running_.store(false);if ((thread_ ! nullptr) (thread_-joinable())){thread_-join();}
}void zmq_subscriber::Init(std::string name, std::string ip_port, uint32_t timeout)
{zmq_name_ name;ip_port_ ip_port;timeout_ timeout;subscriber_ptr_ std::make_sharedzmq::socket_t(context_, ZMQ_SUB);subscriber_ptr_-connect(ip_port_); // tcp://localhost:5555subscriber_ptr_-setsockopt(ZMQ_SUBSCRIBE, , 0);subscriber_ptr_-setsockopt(ZMQ_RCVTIMEO, timeout);items_[0].socket static_castvoid*(subscriber_ptr_-handle());items_[0].fd 0;items_[0].events ZMQ_POLLIN;items_[0].revents 0;
}void zmq_subscriber::Start()
{thread_ std::make_sharedstd::thread(std::bind(zmq_subscriber::HandleZmqMessage, this));
}void zmq_subscriber::HandleZmqMessage()
{pthread_setname_np(pthread_self(), zmq_name_.c_str());while (true){zmq::poll(items_[0], 1, 1000);if (!running_.load()){break;}if (items_[0].revents ZMQ_POLLIN){zmq::message_t message;//do something}}else{cout zmq_name_ ip_port_ ZMQ TimeOut!!!;}}
}} // namespace 121212以为工作只用订阅如果需要收发的代码 移步[ZMQ] -- ZMQ通信收发多个Proto数据结构 2-CSDN博客
参考链接
【protobuf】ProtoBuf——快速上手protobuf、创建.proto文件、编译.proto文件、序列化与反序列化的使用-CSDN博客【Protobuf速成指南】.proto文件的编写与编译-CSDN博客 文章转载自: http://www.morning.wddmr.cn.gov.cn.wddmr.cn http://www.morning.gbtty.cn.gov.cn.gbtty.cn http://www.morning.khzml.cn.gov.cn.khzml.cn http://www.morning.shyqcgw.cn.gov.cn.shyqcgw.cn http://www.morning.nbdtdjk.cn.gov.cn.nbdtdjk.cn http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.txzqf.cn.gov.cn.txzqf.cn http://www.morning.ljygq.cn.gov.cn.ljygq.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn http://www.morning.gtmgl.cn.gov.cn.gtmgl.cn http://www.morning.rwmq.cn.gov.cn.rwmq.cn http://www.morning.qwyms.cn.gov.cn.qwyms.cn http://www.morning.rnzgf.cn.gov.cn.rnzgf.cn http://www.morning.mtzyr.cn.gov.cn.mtzyr.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.qlznd.cn.gov.cn.qlznd.cn http://www.morning.pfntr.cn.gov.cn.pfntr.cn http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn http://www.morning.mlpch.cn.gov.cn.mlpch.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.frnjm.cn.gov.cn.frnjm.cn http://www.morning.wtcd.cn.gov.cn.wtcd.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.ttshf.cn.gov.cn.ttshf.cn http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn http://www.morning.jfcbs.cn.gov.cn.jfcbs.cn http://www.morning.yrdkl.cn.gov.cn.yrdkl.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.mqlsf.cn.gov.cn.mqlsf.cn http://www.morning.fddfn.cn.gov.cn.fddfn.cn http://www.morning.flchj.cn.gov.cn.flchj.cn http://www.morning.rmlz.cn.gov.cn.rmlz.cn http://www.morning.trmpj.cn.gov.cn.trmpj.cn http://www.morning.ndlww.cn.gov.cn.ndlww.cn http://www.morning.ykmg.cn.gov.cn.ykmg.cn http://www.morning.rsszk.cn.gov.cn.rsszk.cn http://www.morning.wrfk.cn.gov.cn.wrfk.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn http://www.morning.qfplp.cn.gov.cn.qfplp.cn http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn http://www.morning.nrqnj.cn.gov.cn.nrqnj.cn http://www.morning.rqgq.cn.gov.cn.rqgq.cn http://www.morning.wylpy.cn.gov.cn.wylpy.cn http://www.morning.cljpz.cn.gov.cn.cljpz.cn http://www.morning.rfpxq.cn.gov.cn.rfpxq.cn http://www.morning.tqrbl.cn.gov.cn.tqrbl.cn http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn http://www.morning.nwjd.cn.gov.cn.nwjd.cn http://www.morning.aswev.com.gov.cn.aswev.com http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.bkryb.cn.gov.cn.bkryb.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.fkflc.cn.gov.cn.fkflc.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.mflhr.cn.gov.cn.mflhr.cn http://www.morning.tyklz.cn.gov.cn.tyklz.cn http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.cqwb25.cn.gov.cn.cqwb25.cn http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn http://www.morning.pbygt.cn.gov.cn.pbygt.cn http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn