• ZeroMQ(也称为ØMQ,0MQ或ZMQ)是一种高性能的异步消息传递库,旨在用于分布式或者并发应用程序中。它提供了一个消息队列,但是与面向消息的中间件不同,ZeroMQ系统可以在没有专用消息代理的情况下运行。
  • ZMQ通过各种传输(TCP、进程内、进程间、多播、WebSocket等)支持通用消息传递模式(发布/订阅、请求/回复、客户端/服务器等),从而使消息传递变得简单。
  • ZeroMQ由大型贡献者社区开发。有许多流行编程语言的第三方绑定以及C#和Java的本机端口。
  • ZeroMQ的理念从零开始。零表示零代理(ZeroMQ是无代理),零延迟,零成本(免费)和零管理。
  • 更广泛地说,“零”是指渗透到项目中的极简主义文化。我们通过消除复杂性而不是通过公开新功能来增加功能。

文章目录

  • C
    • windows + vs2019 + cmake + czmq
      • 安装
      • 编写cmake
      • 例子
    • centos + clion + cmake + libzmq
      • 安装
      • cmake编写
    • windows + vs2019 + cmake + libzmq
      • 安装
      • 编写cmake
      • 测试程序
    • windows + qt+ qmake + libzmq
      • 安装
      • 编写qmake
      • 测试程序
  • C++
    • windows + vs2019 + cmake + cppzmq
      • 安装
      • 编写cmake
      • 例子
    • centos+ clion+ cmake + cppzmq

C

  • C开发人员可以使用两个选项CZMQ或libzmq(低级zeromq库)。

  • 对于C开发人员,推荐的绑定是CZMQ,它为ØMQ提供了一个高级API,并带有诸如轮询器,线程管理和安全性助手之类的其他类。

windows + vs2019 + cmake + czmq

  • Github: https://github.com/zeromq/czmq
  • 文件: http://czmq.zeromq.org/

安装

vcpkg  install czmq:x64-windows

编写cmake

cmake_minimum_required (VERSION 3.8)add_executable (zmp_server "zmp_server.cpp" "zmp_server.h")include_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/include")
link_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/lib")find_package(czmq CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME}  PRIVATE czmq czmq-static)

例子

#include <czmq.h>
int main(void)
{zsock_t* push = zsock_new_push("inproc://example");zsock_t* pull = zsock_new_pull("inproc://example");zstr_send(push, "Hello, World");char* string = zstr_recv(pull);puts(string);zstr_free(&string);zsock_destroy(&pull);zsock_destroy(&push);return 0;
}

效果: 出现错误Assertion failed: Successful WSASTARTUP not yet performed (…\src\signaler.cpp:192)

解决:

#include <czmq.h>
int main(void)
{zsock_t* push = zsock_new_push("inproc://example");zsock_t* pull = zsock_new_pull("inproc://example");zstr_send(push, "Hello, World");char* string = zstr_recv(pull);puts(string);zstr_free(&string);zsys_shutdown();zsock_destroy(&pull);zsock_destroy(&push);return 0;
}

效果:

centos + clion + cmake + libzmq

安装

1、https://github.com/zeromq/libzmq/

2、下载并安装

cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/network:messaging:zeromq:release-stable/CentOS_7/network:messaging:zeromq:release-stable.repo
yum install zeromq-devel

cmake编写

cmake_minimum_required(VERSION 3.16)
project(libcuul_study)set(CMAKE_CXX_STANDARD 11)include_directories(/usr/local/include)
link_directories(/usr/local/lib)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} zmq)

windows + vs2019 + cmake + libzmq

安装

vcpkg install zeromq:x64-windows

编写cmake

cmake_minimum_required (VERSION 3.8)add_executable (zmp_server "zmp_server.cpp" "zmp_server.h")include_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/include")
link_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/lib")find_package(ZeroMQ CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE libzmq libzmq-static)

测试程序

1、服务端

#include <zmq.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#ifndef _WIN32
#include <unistd.h>
#else
#include <windows.h>
#endifvoid MySleep(const unsigned int milliseconds)
{#ifdef _WIN32::Sleep(milliseconds);
#elseusleep(milliseconds * 1000);
#endif
}int main(void)
{//  Socket to talk to clientsvoid* context = zmq_ctx_new();void* responder = zmq_socket(context, ZMQ_REP);int rc = zmq_bind(responder, "tcp://*:5555");assert(rc == 0);while (1) {char buffer[10];zmq_recv(responder, buffer, 10, 0);printf("Received Hello\n");MySleep(1);          //  Do some 'work'zmq_send(responder, "World", 5, 0);}return 0;
}

2、客户端

#include <zmq.h>
#include <string.h>
#include <stdio.h>
#ifndef _WIN32
#include <unistd.h>
#else
#include <windows.h>
#endif
int main (void)
{printf ("Connecting to hello world server…\n");void *context = zmq_ctx_new ();void *requester = zmq_socket (context, ZMQ_REQ);zmq_connect (requester, "tcp://localhost:5555");int request_nbr;for (request_nbr = 0; request_nbr != 10; request_nbr++) {char buffer [10];printf ("Sending Hello %d…\n", request_nbr);zmq_send (requester, "Hello", 5, 0);zmq_recv (requester, buffer, 10, 0);printf ("Received World %d\n", request_nbr);}zmq_close (requester);zmq_ctx_destroy (context);return 0;
}

效果:

windows + qt+ qmake + libzmq

安装

vcpkg install zeromq:x64-windows

编写qmake

INCLUDEPATH += C:\Users\oceanstar\vcpkg\win\vcpkg\installed\x64-windows\include
LIBS    += C:\Users\oceanstar\vcpkg\win\vcpkg\installed\x64-windows\lib\libzmq-mt-4_3_3.lib

并将C:\Users\oceanstar\vcpkg\win\vcpkg\installed\x64-windows\bin的libzmq-mt-4_3_3.dll放到二进制文件所在目录下

测试程序

#include <QCoreApplication>
#include <zmq.h>
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int major, minor, patch;zmq_version(&major, &minor, &patch);printf("Current ZeroMQ version is %d.%d.%d\n", major, minor, patch);return a.exec();
}

C++

  • C开发人员可以使用四个选项:cppzmq、zmqpp、azmq、czmqpp

    • cppzmq是libzmq的C ++绑定
    • zmqpp是libzmq的高级绑定。
    • czmqpp是基于高级czmq API的绑定。
    • fbzmq是与Apache Thrift集成的绑定,此外还提供更高级别的抽象。它需要C ++ 14。

windows + vs2019 + cmake + cppzmq

  • Github:https://github.com/zeromq/cppzmq

安装

vcpkg install cppzmq:x64-windows

编写cmake

cmake_minimum_required (VERSION 3.8)add_executable (zmp_server "zmp_server.cpp" "zmp_server.h")include_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/include")
link_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/lib")find_package(cppzmq CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE cppzmq cppzmq-static)

例子

#include <string>
#include <zmq.hpp>
int main()
{zmq::context_t ctx;zmq::socket_t sock(ctx, zmq::socket_type::push);sock.bind("inproc://test");const std::string_view m = "Hello, world";sock.send(zmq::buffer(m), zmq::send_flags::dontwait);
}

centos+ clion+ cmake + cppzmq

centos + clion + cmake + libzmq这个目录处下载的默认只有<zmq.h>头文件,这个文件是ZeroMQ开发的C语言版本。如果想要使用C++开发版本的<zmq.hpp>头文件,那么需要自己下载zmq.hpp文件,然后复制到我们ZeroMQ安装路径的include目录下就可以了

wget https://github.com/zeromq/cppzmq/archive/master.zipunzip master.zipcd cppzmq-mastersudo cp ./zmq.hpp /usr/local/include

问题:执行./ci_build.sh

CMake Error at tests/CMakeLists.txt:51 (catch_discover_tests):Unknown CMake command "catch_discover_tests".

解决: yum install catch-devel无法解决

参考:

  • 消息库zeromq的源码编译及其简单使用
  • 消息队列-ZeroMQ的安装以及使用
  • 官网
  • ZeroMQ:02—Linux下ZeroMQ的编译安装与运行(Ubuntu为例)

C/C++编程:ZeroMQ安装以及使用(windows+centos)相关推荐

  1. jar java classpath_win7中java编程工具安装 java环境变量设置

    win7中java编程工具安装 java环境变量设置 Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件 解决: 在[系统变量]里编辑java_home.cl ...

  2. python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项

    新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...

  3. python编程需要什么软件-《》 学习python编程需要安装哪些软件?

    python安装教程有没有?最好是视频的 廖雪峰的python教程这里有教程,还是不错的. 学Python要安装哪些软件? 一. 安装python 1. 从python下载相应的python安装包,打 ...

  4. 编程软件python-零基础学Python编程需要安装什么软件?

    前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,都放在了文章结尾,欢迎前来领取! 今天想要跟大 ...

  5. mac安装rstudio_在Windows / Linux / Mac OS上安装R和RStudio入门

    mac安装rstudio 在Windows上安装R (Installing R on Windows) Go to r-project.org on your internet browser.在您的 ...

  6. 超详细MySQL安装教程(Windows)

    推荐自己写的MySQL专栏:MySQL相关安装教程与MySQL语法 本人前不久把电脑Win10 x64系统给重置了,阅读官方文档,正打算把MySQL下载安装的时候,萌生了专门为萌新写一篇MySQL安装 ...

  7. Bochs编程环境安装

    Bochs编程环境安装 写在前面 为了更好的记录自己学习过程以及踩过的坑,记录一下<操作系统真相还原>的编程环境安装. 安装过程参考了CSDN的这篇博客:安装Vmware Station ...

  8. 【Python】如何通过官网下载和安装PythonPyCharm(Windows系统)

    下载安装Python 1. 在浏览器输入Python官网网址http://www.python.org 2. 点击上方标题栏downloads,在下拉列表选择Windows 3. 点击最上方Lates ...

  9. FasterRunner安装教程(Windows版)

    FasterRunner安装教程(Windows版) 原创 幼儿园二园长 发布于2019-05-10 17:02:59 阅读数 499 收藏 更新于2019-05-10 17:04:23 分类专栏: ...

最新文章

  1. Visual Studio 20年
  2. linux安装mysql5.7.25教程,Linux安装mysql-5.7.25
  3. LINUX系统无线网频繁断开_Ubuntu系统安装amp;amp;解决WiFi不可用
  4. 公众号和小程序可以同名了 名称支持同主体复用
  5. (一)JAVA 点滴积累之JAVA开发环境安装
  6. linux乱码临时怎么解决方案,(收集)linux环境下乱码的解决方法
  7. 关于波峰波谷趋势分割(想象中的方法),判断趋势,突然来想到的,记下来,没有实验。以便以后用于分割...
  8. Java关闭窗口和刷新
  9. 不要运行explorer_在Internet Explorer浏览器上运行测试
  10. 深度学习中所有的优化器的详细介绍与列表化对比分析
  11. “kuangbin带你飞”专题计划——专题十五 数位DP
  12. matplotlib 绘制直方图和拟合正态曲线
  13. 爬取拉勾网招聘信息笔记
  14. 三大视角,聊聊我眼中的广告系统
  15. IntelIj IDEA下同一个包中的类不能互相引用的问题
  16. shell 脚本与常用的bash命令
  17. 大一C语言实验报告九江学院,九江学院C语言实验报告及答案-资源下载人人文库网...
  18. [论文阅读笔记69]医学术语标准化-CODER
  19. 达梦数据库DM的dmap服务启动失败dmap init failed如何解决
  20. 查看mysql临时密码_MySQL修改密码,查看MySQL临时密码

热门文章

  1. 2022广州国际绿色标签印刷技术展览会
  2. 最火的Android开源项目(一)
  3. java中System.getProperty()
  4. 2021年继电保护免费试题及继电保护考试试卷
  5. HTML5期末大作业:美食网站设计——我的餐厅食品网页(8页) HTML+CSS+JavaScript
  6. 华为笔试:字符串解压缩
  7. 【PTA-Python】第1章-3 输出“人生苦短,我学Python” (10 分)
  8. 菜逼如何优雅的上传代码到github(这次一定能传上!)
  9. 使用两种脉冲神经网络(Spiking Neural Network)预测脑电图的癫痫发作:基于LIF神经元模型的实践与分析
  10. C++ 中的时间测试与空间申请