C/C++编程:ZeroMQ安装以及使用(windows+centos)
- 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)相关推荐
- jar java classpath_win7中java编程工具安装 java环境变量设置
win7中java编程工具安装 java环境变量设置 Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件 解决: 在[系统变量]里编辑java_home.cl ...
- python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项
新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...
- python编程需要什么软件-《》 学习python编程需要安装哪些软件?
python安装教程有没有?最好是视频的 廖雪峰的python教程这里有教程,还是不错的. 学Python要安装哪些软件? 一. 安装python 1. 从python下载相应的python安装包,打 ...
- 编程软件python-零基础学Python编程需要安装什么软件?
前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,都放在了文章结尾,欢迎前来领取! 今天想要跟大 ...
- 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.在您的 ...
- 超详细MySQL安装教程(Windows)
推荐自己写的MySQL专栏:MySQL相关安装教程与MySQL语法 本人前不久把电脑Win10 x64系统给重置了,阅读官方文档,正打算把MySQL下载安装的时候,萌生了专门为萌新写一篇MySQL安装 ...
- Bochs编程环境安装
Bochs编程环境安装 写在前面 为了更好的记录自己学习过程以及踩过的坑,记录一下<操作系统真相还原>的编程环境安装. 安装过程参考了CSDN的这篇博客:安装Vmware Station ...
- 【Python】如何通过官网下载和安装PythonPyCharm(Windows系统)
下载安装Python 1. 在浏览器输入Python官网网址http://www.python.org 2. 点击上方标题栏downloads,在下拉列表选择Windows 3. 点击最上方Lates ...
- FasterRunner安装教程(Windows版)
FasterRunner安装教程(Windows版) 原创 幼儿园二园长 发布于2019-05-10 17:02:59 阅读数 499 收藏 更新于2019-05-10 17:04:23 分类专栏: ...
最新文章
- Visual Studio 20年
- linux安装mysql5.7.25教程,Linux安装mysql-5.7.25
- LINUX系统无线网频繁断开_Ubuntu系统安装amp;amp;解决WiFi不可用
- 公众号和小程序可以同名了 名称支持同主体复用
- (一)JAVA 点滴积累之JAVA开发环境安装
- linux乱码临时怎么解决方案,(收集)linux环境下乱码的解决方法
- 关于波峰波谷趋势分割(想象中的方法),判断趋势,突然来想到的,记下来,没有实验。以便以后用于分割...
- Java关闭窗口和刷新
- 不要运行explorer_在Internet Explorer浏览器上运行测试
- 深度学习中所有的优化器的详细介绍与列表化对比分析
- “kuangbin带你飞”专题计划——专题十五 数位DP
- matplotlib 绘制直方图和拟合正态曲线
- 爬取拉勾网招聘信息笔记
- 三大视角,聊聊我眼中的广告系统
- IntelIj IDEA下同一个包中的类不能互相引用的问题
- shell 脚本与常用的bash命令
- 大一C语言实验报告九江学院,九江学院C语言实验报告及答案-资源下载人人文库网...
- [论文阅读笔记69]医学术语标准化-CODER
- 达梦数据库DM的dmap服务启动失败dmap init failed如何解决
- 查看mysql临时密码_MySQL修改密码,查看MySQL临时密码
热门文章
- 2022广州国际绿色标签印刷技术展览会
- 最火的Android开源项目(一)
- java中System.getProperty()
- 2021年继电保护免费试题及继电保护考试试卷
- HTML5期末大作业:美食网站设计——我的餐厅食品网页(8页) HTML+CSS+JavaScript
- 华为笔试:字符串解压缩
- 【PTA-Python】第1章-3 输出“人生苦短,我学Python” (10 分)
- 菜逼如何优雅的上传代码到github(这次一定能传上!)
- 使用两种脉冲神经网络(Spiking Neural Network)预测脑电图的癫痫发作:基于LIF神经元模型的实践与分析
- C++ 中的时间测试与空间申请