Ubuntu下c++ ZeroMQ环境配置(已踩坑,亲测可用)

首先感谢知乎Ligang Wen大佬,原帖:
https://zhuanlan.zhihu.com/p/398730348

简介

这套环境由qt + libsodium + zmq + cppzmq + zmqpp组成。

zmq是ZeroMQ的主体框架,cppzmq是ZMQ的c++操作库,zmqpp是cppzmq封装后的人性化版本的库。

libsodium是加密用的库,注意这里有个坑,libsodium的版本不能太高,否则cppzmq装不上。按照下面的方案即可解决这个问题。

安装libsodium

git clone https://gitee.com/cybermadman/libsodium
cd libsodium
git checkout 1.0.10 //这里回退了几个版本,因为版本过高编译zmq时会出现-Werror=deprecated-declarations 错误,具体见zmq编译
./autogen.sh -f -s
./configure && make check 
sudo make install
sudo ldconfig
cd ../

安装zmq框架

apt-get install libzmq3-dev

安装cppzmq

git clone git://github.com/zeromq/libzmq.git 
cd libzmq
./autogen.sh
./configure -with-libsodium && make 
sudo make install 
sudo ldconfig
cd ../

安装zmqpp

git clone https://github.com/zeromq/zmqpp.git
mkdir build
cd build 
cmake ..
make 
sudo make install

QT配置

在编译之前,需要在QT工程文件加上下面这行,才可以正确链接到zmqpp库,cmake同理。

LIBS += /usr/local/lib/libzmqpp-static.a -lzmq

测试

跑个简单的sub-pub模式

sub端:

#include <iostream>
#include <string>
#include <zmqpp/zmqpp.hpp>
using namespace std;
int main (int argc, char *argv [])
{
    zmqpp::context context_;
    const string addr_port = "tcp://localhost:5555";
    zmqpp::socket_type type = zmqpp::socket_type::subscribe;
    zmqpp::socket socket_ = zmqpp::socket(context_,type);
    socket_.set(zmqpp::socket_option::subscribe, "");
    socket_.connect(addr_port);
    while(1) {
        zmqpp::message message;
        socket_.receive(message);
        std::cout <<"recv data: "<< message.get(0)<< std::endl;
    }
    return 0;
}

pub端:

#include <iostream>
#include <string>
#include <zmqpp/zmqpp.hpp> 
#include <unistd.h>
using namespace std;
int main ()
{
    zmqpp::context context_;
    const string addr_port = "tcp://*:5555";
    zmqpp::socket_type type = zmqpp::socket_type::publish;
    zmqpp::socket socket_ = zmqpp::socket(context_,type);
    socket_.bind(addr_port);
    int i=0 ;
    while(i<100) {
        zmqpp::message message;
        message << "test[" + to_string(i++)+"]";
        socket_.send(message);
        sleep(1);
    }
    return 0;
}


搞定!

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工具人ToolBoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值