ZeroMQ实践之路(1)

15 篇文章 1 订阅
9 篇文章 0 订阅

前言

第一份工作中用到了ZMQ,后来面试的过程中被问到有没有研究过它的源码,如实回答没有看过,当时是真的加班太猛了,没有时间也没有意识去看。但自己计划表中一直列着这件事,今天抽出时间去实践一下这件事。

ZMQ的作者

ZeroMQ 的作者是Pieter Hintjens(1962–2016),我是搜ZMQ的书籍时才知道的。他不仅是代码的主要贡献者,还是社区的创建者和维护者,也是《ZeroMQ:云时代极速消息通信库》这本书的作者。他在2010年被查出了癌症晚期,随后他动了多次手术并进行了半年多的化疗,在2011年他仍然坚持完成了这本书的写作。作者于2016年4月写了一篇名为 a protocal for dying《死亡协议》的博文,同年10月4日作者使用安乐死结束了自己的生命。

作者在《死亡协议》一文中介绍了,自己从一开始不爱和人打交道,用他的话说,“也许有点自闭,心里只有工作、游泳和几只猫”;到后来自己爱上了参加研讨会,喜欢和别人交流,因为“在那里找人讲话不需要想借口,每个人都喜欢而且想要讲话”。接着讲述了发现患病的过程,以及身边人前来看望他的情形。作者对于面对死亡以及如何去看望身患绝症,时日不多的人提出了自己“协议”。看望者不要以泪洗面,不要说一些不走心的鼓励的话,而要和病人一块回忆之前生活的美好,帮助病人去做一些想要做的事情。而病人自己要尽量做到常喜乐,认清现实,坦诚地面对别人。作者说“死亡不等同于失败”。

代码和编译

代码路径:https://github.com/zeromq/libzmq。

本来想要在VS下进行编译的,发现builds目录下有个“deprecated-msvc”的文件夹,表示不推荐使用VS进行编译,后来到github库中了解到这部分内容已经停止维护了(当时不清楚这些,在VS2010下编译,各种报错,最后还是放弃了)。

linux下编译:

  • 使用make编译(依赖Makefile文件):

    • 在根目录下执行sudo ./configure,该命令用于检查环境,查看依赖项.使用该命令时,可以带一些prefix选项,比如./configure --without-libsodium表示不使用libsodium加密库. 如果不指定prefix选项,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share. 执行完./configure后,会生成Makefile文件.
    • 执行sudo make,去编译代码
    • 执行sudo make install,把生成的文件拷贝系统目录中
    • 执行ldconfig,由于生成了新的动态库,需要重新加载动态库
  • 使用cmake编译(依赖CMakeList.txt文件)

    • CMakeList.txt所在的目录中创建build文件夹,一会儿编译生成的文件放到这里
    • 进入到build文件夹中,并执行sudo cmake ..,该命令会使用CMakeList.txt生成Makefile文件.
    • sudo make
    • sudo make test:对编译后的进行测试,如果结果有少量测试用例失败,可以忽略
    • sudo make install
  • 总结下上述的过程:
    在这里插入图片描述

参考文章:

  • https://blog.csdn.net/qq_41453285/article/details/105989698
  • https://blog.csdn.net/fangye945a/article/details/84845325
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ZeroMQ是一个开源的消息传递库,它提供了高性能、异步的消息传递模式。它支持多种编程语言,包括C++。 在C++中使用ZeroMQ,你需要下载并安装ZeroMQ库。你可以从ZeroMQ的官方网站(http://zeromq.org)下载最新版本的库,并按照官方文档提供的说明进行安装。 一旦安装完成,你可以在C++代码中包含ZeroMQ的头文件,并链接ZeroMQ库。以下是一个简单的示例代码,演示如何使用ZeroMQ进行消息传递: ```cpp #include <zmq.hpp> #include <string> int main() { // 创建一个ZeroMQ上下文 zmq::context_t context(1); // 创建一个ZeroMQ套接字 zmq::socket_t socket(context, zmq::socket_type::req); // 连接到目标地址 socket.connect("tcp://localhost:5555"); // 发送消息 std::string message = "Hello, ZeroMQ!"; zmq::message_t request(message.size()); memcpy(request.data(), message.data(), message.size()); socket.send(request, zmq::send_flags::none); // 接收回复 zmq::message_t reply; socket.recv(reply, zmq::recv_flags::none); // 处理回复消息 std::string replyMessage(static_cast<char*>(reply.data()), reply.size()); std::cout << "Received reply: " << replyMessage << std::endl; return 0; } ``` 以上代码中,我们创建了一个REQ类型的套接字,并通过connect()方法连接到目标地址。然后,我们发送一条消息并接收回复。 这只是ZeroMQ在C++中使用的简单示例,你可以根据需要进一步探索ZeroMQ的功能和特性。希望对你有帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodingLife99

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

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

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

打赏作者

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

抵扣说明:

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

余额充值