C++跨平台(四):ZeroMQ的简单示例

C/C++编程:ZeroMQ安装以及使用(windows+centos) ZeroMQ(也称为ØMQ,0MQ或ZMQ)是一种高性能的异步消息传递库,旨在用于分布式或者并发应用程序中。它提供了一个消息队列,但是与面向消息的中间件不同,ZeroMQ系统可以在没有专用消息代理的情况下运行。 ZMQ通过各种传输(TCP、进程内、进程间、多播、WebSocket等)支持通用消息传递模式(发布/订阅、请求/回复、客户端/服务器等),从而使消息传递变得简单。 ZeroMQ由大型贡献者社区开发。有许多流行编程语言的第三方绑定以及C#和Java的本机端口。 ZeroMQ的理念从零开始。零表示零.. 阅读详情

前言

因为在开发中需要使用zmq来进行跨平台的进程间通信需求的开发,故此学习。

ZeroMQ是什么

ZeroMQ官网
ZeroMQ C++ 版GitHub地址
以下是它对自己的介绍:
在这里插入图片描述总结一下:
ZMQ看起来像是一个嵌入式网络连接库,但实际上是一个并发框架。框架提供的套接字可以满足在多种协议之间传输原子信息,如线程间、进程间、TCP、广播等。

它的优点:

  1. 跨平台:能在几乎所有的操作系统上运行。
  2. 支持多种语言
  3. 有着成熟的社区维护
  4. 高速

本文要做的事情

使用最新的ZMQ稳定版本;

实验开始!!!!

一、获取ZeroMQ源码

https://github.com/zeromq/libzmq

二、构建ZeroMQ

有俩种方式

  1. 直接下载Released版:ZeroMQ Released
  2. 自己构建:VS2019集成zeromq----(编译库)

我用的第一种。
在这里插入图片描述

vs配置

将几个文件拷贝到工程中,将俩个dll放到debug目录下。
在这里插入图片描述
然后在工程属性里,按照链接静态库的方式调用libzmq-v140-mt-4_3_4.lib,具体步骤不细述。

简单的Server\Client

Hello World
服务器代码:

#include "zmq.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <Windows.h>
int main(void)
{
    /*  Socket to talk to clients */
    void *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];
        memset(buffer, 0x00, sizeof(buffer));
        rc = zmq_recv(responder, buffer, 10, 0);
        //buffer[rc]=0;
        printf("server Received [%s]rc[%d]\n", buffer, rc);
        Sleep(1);          //  Do some 'work'
        zmq_send(responder, "World1234", 9, 0);
        printf("server send [world]\n");
    }
    return 0;
}

客户端代码

#include "zmq.h"
#include <string.h>
#include <stdio.h>
#include <iostream>


int main(void)
{
    printf("Connecting to hello world server\n");
    void* context = zmq_ctx_new();
    void* client = zmq_socket(context, ZMQ_REQ);
    zmq_connect(client, "tcp://localhost:5555");

    char buffer[10] = { 0 };
    int request_nbr = 0;
    for (request_nbr = 0; request_nbr<1; request_nbr++)
    {
        zmq_send(client, "hello", 9, 0);
        printf("client send [hello]\n");
        memset(buffer, 0x00, 10);
        zmq_recv(client, buffer, 10, 0);
        printf("client recv [%s]\n", buffer);
    }
    zmq_close(client);
    zmq_ctx_destroy(context);

    return 0;
}

实验结果

启动server,启动client,client发送hello,server收到,并send world

在这里插入图片描述

参考资料

中文版zeromq相关资料
zeromq安装使用教程(最详细)

ZeroMQ下载、编译和使用 下载地址:https://github.com/zeromq/libzmq/releases 我下载的是最新版zeromq-4.2.5.zip 解压后,进入builds文件夹, 我在windows上运行的,用的编译器是vs2015,进入msvc文件夹后,直接用对应工程的文件,直接编译就行。 测试: 编译后,会生成对应版本的,比如是release版本还是debug版本,32位,还是... 阅读详情

相关推荐

ZeroMQ C++库生成

无脑复制粘贴即可生成zeroMQ对应的库和文件

Atopos_Tzb的博客 373

C/C++编程:ZeroMQ架构

ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输类型的套接字。引用云风的话来说:ZeroMQ并不是一个对socket的封装、不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比TCP协议更高一层的协议。(当然Z) ...

OceanStar的博客 2573

zeroMQ编程实例

1、安装zeroMQ wget http://download.zeromq.org/zeromq-4.1.2.tar.gz tar -xvzf zeromq-4.1.2.tar.gz cd zeromq-4.1.2.tar.gz ./configure --without-security make && make install 或者: git clone https://github.

The Coding World 1万+

C/C++编程:ZeroMQ示例学习

获取版本 ZeroMQ确实有多个版本,并且经常出现问题,如果您遇到问题,它将在更高版本中得到修复。因此,准确地知道您实际链接的ZeroMQ版本是一个有用的技巧。 C #include <zmq.h> int main (void) { int major, minor, patch; zmq_version (&major, &minor, &patch); printf ("Current 0MQ version is %d.%d.%d\n",

OceanStar的博客 3131

【C++】开源:ZeroMQ消息中间件配置与使用

zmq消息中间件配置与使用

DevFrank的博客 3787

【ZMQ C/C++ 教程】深入浅出:ZeroMQ中的zmq_recv与zmq_msg_recv解析

在探讨 ZeroMQ(零消息队列)的核心概念和机制之前,我们首先需要了解它的基础理念和它在现代计算中的重要性。ZeroMQ是一个高性能的异步消息库,用于在分布式或并发应用中实现消息传递和通信。在这一章节中,我们将探讨ZeroMQ的基础概念,并从心理学的角度分析为什么消息传递在软件开发中如此关键。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 3756

2025年最值得学习的C++通信技术:ZeroMQ跨平台配置实战详解

掌握ZeroMQ实现跨语言通信的C++配置方法,解决系统间高效交互难题。适用于微服务、分布式系统等场景,支持多平台部署,具备低延迟、高并发优势。结合2025全球C++及系统软件技术大会最新实践,详解配置步骤与性能优化技巧,值得收藏。

LiteTrans的博客 982

ZeroMQ 使用指南(最新的版本)

ZeroMQ 使用指南,最新的版本,从入门到精通。支持请求应答、发布订阅等模式

C++之ZeroMQ的使用

zeromq官网的使用教程很详细,这里主要介绍两种常使用的模式。 Request/Reply (请求应答模式) 这种模式和网络API请求一样,先向一地址的发送请求,然后等待服务器返回对应的数据或者状态,服务器在后端一直监听发过来的请求,然后返回对应的数据即可。 这里代码都是cppzmq的封装的。 void sendMsg() { int port=5555; std::cout &...

@way 7763

buttonrpc_cpp14:几百行代码实现的modern c++ rpc library

buttonrpc - modern rpc framework for C++ ZeroMQ 作为网络层 使用c++14开发 Features 轻量级,跨平台,简单易用 服务端可以绑定自由函数,类成员函数,std::function对象 服务端可以绑定参数是任意自定义类型的函数 客户端与服务端自动重连机制 客户端调用超时选项 Example server: #include "buttonrpc.hpp" int foo(int age, int mm){ return age + mm; } int main() { buttonrpc server; server.as_server(5555); server.bind("foo", foo); server.run(); return 0; } client: #include #include

World Action Model:经典论文

郑困时,图prorpt为机量人压务时,退过驱制解弱词表(constrsinsd decoding), 强附模型只从.256个者动作token中保H, B象总注活地。始VLA之一,RT-2使用了大量的五联网VQ据与少里的机械网的AcSonDat行CoFine-Tunng, 独组sl, 共i744个episode,Mous使用三个专累模,分是vidogonmedel,actonesget,understandng。包的核定之的的观到沟血黄动作,预之后现(vorlemodel),tseing,2。

u013250861的博客 410

ZeroMQ跨平台C++开发实战:VS2022与Ubuntu双向通信环境搭建

网络通信是分布式系统和跨平台应用开发的核心基础,其本质在于实现不同进程或设备间的数据可靠交换。传统Socket编程需要开发者手动处理连接管理、粘包断包等底层细节,而现代消息中间件通过封装通信协议和提供高级抽象模式,大幅降低了开发复杂度。ZeroMQ作为一种轻量级、高性能的消息库,采用C语言核心与多语言绑定设计,通过提供REQ-REP、PUB-SUB、DEALER-ROUTER等多种通信模式,实现了异步、松耦合的数据传输,其技术价值在于平衡了性能与易用性,尤其适合需要低延迟、高吞吐的分布式数据采集、微服务间通

weixin_30315435的博客 379

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 652

C++ 之ZeroMQ编译

ZeroMQ编译 项目需求 当有两个项目或者多个项目的实时需要进行信息的交换,根据项目的要求有实时的和非实时的。常用的是基于消息队列的机制,特别是网站的项目。但一般都会把消息框架搭建在公共的服务器上,作为一个中间层,我们这里需要的是不需要服务器也能也交换信息,那就可以基于socket进行通信,但是socket底层写起来难以维护和管理,特别是涉及到多进程机制。这里有个基于C编写的ZeroMQ,根据官...

@way 4262

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6947

瑞芯微RK809音频驱动

瑞芯微RV1126中的RK809音频驱动开发

m0_61899715的博客 5221

C++使用ZeroMQ和MessagePack实现简单又轻量级的RPC框架

ZeroMQ(也称为0MQ)是一个高性能的异步消息库,旨在使用标准的、对等的传输协议实现消息的发送与接收。ZeroMQ的核心是提供一个消息队列,使得消息发送和接收更加高效和可靠。ZeroMQ支持多种消息模式,如请求/响应(Request/Reply)、发布/订阅(Publish/Subscribe)等。在上述代码中,ZMQ_REP表示响应模式,用于服务器端,而ZMQ_REQ则用于客户端,发起请求并等待响应。MessagePack是一种高效的二进制序列化库,类似于JSON,但更紧凑、更快。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 1448

c#源码,将矩阵(二维数组)渲染成云图,强度图,热力图,均匀性图,伪彩图

优快云软件0积分下载链接:https://download.youkuaiyun.com/download/wanghuannihao1992/86656759。6、渲染效果良好,颜色均匀分布,不存在等高线,交叉点。3、纯粹的C#代码编写,不含第三方dll或者控件。4、支持ColorBar显示,强度值颜色坐标显示。2、渲染时间60ms左右,速度快,1、二维数据最小支持2*2,7、采样全新数据插值算法。先直接上C#软件效果图。5、整图保存为单个图片。

业余程序员小徐的博客 6883

ZeroMQ C++案例

ZeroMQ是一个跨平台、开源的消息内核,支持Request/Response、Publish/Subscribe、Push/Pull这3种通信模型,同时,也是一个嵌入式库,它封装了网络通信、消息队列、线程调度等功能,向上层提供简洁的API,应用程序通过加载库文件,调用API函数来实现高性能网络通信。

sanqima的专栏 2026

【从零开始学习SLAM】官方tf教程小海龟跟随程序

ros tf 进行坐标系之间转换的运算和发布

小秋 AI SLAM 入门实战教程 2034

华为OD机试真题 新系统 2026-07-22 Java&Go&C 实现【最小代价完成论文评审】

某校有 n 篇论文需要分配给教师评审。 每篇论文 i 可由 files[i] 对应的教师列表中任一教师评审。 每篇论文至少需要一名教师评审。 每位教师 t 不论被分配多少篇论文,其评审费用固定为 cost[t]。 请给出参与评审教师数量最少时的总费用。 如果存在多种方案满足教师数量最少,则选择总费用最小的方案。

MISAYAONE的博客 151

ZeroMQ三种通信模式深度对比:从智能家居到工业控制的实际C++代码示例

本文深度对比了ZeroMQ的三种通信模式(PUB/SUB、双向PUB/SUB、PAIR),通过智能家居、工业传感器网络和机器人控制三大实际C++代码示例,剖析其核心原理、适用场景与性能差异。文章提供了跨平台(VS2022/Ubuntu22.04)的CMake工程模板,并重点探讨了双向通讯在工业物联网中的实现与挑战,帮助开发者根据业务需求选择最佳通信方案。

water的专栏 990

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7403

ZeroMQ(四):管道模式,C和C++。

ZeroMQ 的管道模式是一种特殊的消息传递模式,通常用于将任务或消息从一个生产者传递到多个消费者。消息一对多传递:单个生产者可以将消息发送到多个消费者。负载均衡:消息在消费者之间进行负载均衡,以确保每个消费者都能接收到均衡的消息量。下游消费者处理:消费者处理消息,并且可以将处理后的消息传递给下游消费者,形成消息处理链。在 ZeroMQ 中,管道模式由PUSH和PULLPUSH 套接字:生产者使用PUSH套接字发送消息。消息按照负载均衡的方式发送到连接的PULL套接字。PULL 套接字:消费者使用。

Bobowen的博客 1743

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ZeroMQ(五):独占模式,C和C++

ZeroMQ的独占模式(Exclusive Pair Pattern)是一种设计模式,旨在确保两个通信对端(PAIR)在同一时间段内独占地访问共享资源,防止其他对端干扰。它通过限制并发访问,确保资源的安全性和一致性。在高并发场景中,独占模式有助于避免数据竞争、死锁和不一致性问题。ZeroMQ通过多种套接字模式(如PAIR、REQ/REP)和线程同步机制,支持独占模式的实现,保证消息在严格的单对单通信通道中传递,从而提高系统的稳定性和可靠性。

Bobowen的博客 1763

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Windows+VS2022配置ZeroMQ C++开发环境与实战示例

在分布式系统与高性能网络编程领域,进程间通信(IPC)和网络通信是核心基础。其原理在于通过特定的协议和接口,实现不同进程或网络节点间的数据交换。从传统的Socket编程到现代消息中间件,技术不断演进,旨在解决延迟、吞吐量和复杂度等工程挑战。ZeroMQ(ZMQ)作为一种轻量级、高性能的通信库,其技术价值在于提供了比原始Socket更高级的抽象和多种通信模式(如请求-应答、发布-订阅),同时保持了库的简洁性和嵌入应用的灵活性,无需独立中间件服务器。这使得开发者能够高效构建复杂的网络拓扑,适用于微服务通信、实时

weixin_34416754的博客 415

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: C++跨平台(三):进程间通讯(IPC)的技术选型
下一篇: 智能指针不是解决内存泄漏的万能良药
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值