之前也有提到 使用订阅发布 pub sub模式必须要显示定义ZMQ_SUBSCRIBE

只有以此模式定义的过滤字节开头的消息才会被订阅者收到

如果想收到所有信息

可定义subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); 此类过滤器

示例很简单 我将示例代码发布者与订阅者整合到一个工程中 开启两个线程演示

上代码

// psenvpubsub.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "zhelpers.hpp"
#include <thread> void PubFunc()
{
zmq::context_t context();
zmq::socket_t publisher(context, ZMQ_PUB);
publisher.bind("tcp://*:5563"); while () {
// Write two messages, each with an envelope and content
s_sendmore(publisher, "A");
s_send(publisher, "We don't want to see this");
s_sendmore(publisher, "B");
s_send(publisher, "We would like to see this");
Sleep();
}
return;
} void SubFunc()
{
zmq::context_t context();
zmq::socket_t subscriber(context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5563");
subscriber.setsockopt(ZMQ_SUBSCRIBE, "B", ); while () { // Read envelope with address
std::string address = s_recv(subscriber);
// Read message contents
std::string contents = s_recv(subscriber); std::cout << "[" << address << "] " << contents << std::endl;
}
} int main()
{
//开启两个线程 一个发 一个收
// 用于演示发布者的封包发送及订阅者的过滤使用 std::thread threadPub = std::thread(PubFunc);
std::thread threadSub = std::thread(SubFunc); threadPub.join();
threadSub.join(); return ;
}

zeromq学习记录(七)订阅发布消息封装的更多相关文章

  1. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP

    阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库  http://download.zeromq.org ...

  2. Spring学习记录(七)---表达式语言-SpEL

    SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...

  3. zeromq学习记录(六)C语言示例

    考虑到官方的示例c语言是最多的 官方未使用C++语言演示的例子就使用VC编译C语言例子 记录在此 /************************************************** ...

  4. zeromq学习记录(二)天气更新服务器使用ZMQ_SUB ZMQ_PUB

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  5. zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  6. zeromq学习记录(四)使用ZMQ_ROUTER ZMQ_DEALER

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  7. zeromq学习记录(三)使用ZMQ_PULL ZMQ_PUSH

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  8. leveldb 学习记录(七) SSTable构造

    使用TableBuilder构造一个Table struct TableBuilder::Rep { // TableBuilder内部使用的结构,记录当前的一些状态等 Options options ...

  9. Python学习(七)面向对象 ——封装

    Python 类的封装 承接上一节,学了Student类的定义及实例化,每个实例都拥有各自的name和score.现在若需要打印一个学生的成绩,可定义函数 print_score() 该函数为类外的函 ...

随机推荐

  1. Win7系统安装Centos7.0双系统(三)

    4.6语言选择 4.7安装信息设置,除以下几项改动其他都可默认. 软件选择(默认最小):带GUI的服务器或GNOME桌面,可根据使用需要选择安装软件. 磁盘分区:Linux默认可分为3个分区,分别是b ...

  2. ylbtech-协议-网络-安全协议:HTTPS

    ylbtech-协议-网络-安全协议:HTTPS HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext ...

  3. cookie.js插件的案例

    cookie.js插件的案例: https://github.com/jaywcjlove/cookie.js/blob/master/README.md    文档  api   在这里即可查看用法 ...

  4. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)

    搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...

  5. Linux安装rz/sz,htop插件

    Linux下rz/sz安装及使用方法 sz: 将选定的文件发送(send)到本地机器; rz:运行该命令会弹出 一个文件选择窗口, 从本地选择文件上传到服务器(receive). 下载安装包 lrzs ...

  6. RE validator

    package com.office.utility;   import java.util.regex.Pattern;   /**  * 校验器:利用正则表达式校验邮箱.手机号等  *  * @a ...

  7. C#控制台程序点击后暂停工作

    C#控制台应用程序,点击后就会暂停运行,但是我想让它运行不受点击的干扰.下面是程序演示: public void Test() { ThreadOut(); } private void Thread ...

  8. MyEclipse 10 + OsChina GIt项目托管

    环境:Egit+MyEclipse 10,此教程默认MyEclipse 10和Egit都已经配置好. 1.注册OsChina Git账号,网址:http://git.oschina.net/,具体注册 ...

  9. shell脚本(一)

     shell脚本(一) 定义:脚本就是一条条命令的堆积.常见脚本有:js asp,jsp,php,python Shell特点:简单易用高效 Shell分类:图形界面(gui shell) 命令行界面 ...

  10. 使用PandoraBox时的软件源配置

    src/gz 18.12_core http://downloads.pangubox.com:6380/pandorabox/18.12/targets/ralink/mt7621/packages ...