zmq-pub-sub模式c代码

本文记录了在C语言中使用ZeroMQ(zmq)实现PUB-SUB模式时遇到的问题及解决方法。主要包括:1) 设置非空topic以确保消息接收;2) PUB端使用zmq_bind,SUB端使用zmq_connect与指定的IP和端口配对。通过这些关键点,成功实现了消息的发布与订阅功能。
摘要由CSDN通过智能技术生成

最近被接发消息折腾的够呛,先后用到rti-dds和zmq进行信息交互。最让人头痛的当属zmq的使用,在没有任何积累的情况下顺利接发消息耗费了我大约一周的时间。主要碰到2个问题:

1.topic设置:一定要设置非空topic,否则无法接收消息。

开发手册明明写着设置空topic,会接收所有消息。但经过我验证,是错误的。

而且pub和sub端,需要设置相同的topic(貌似是废话)。

2.zmq_bind zmq_connect "tcp://127.0.0.1:port_num" "tcp://localhost:port_num"

在sub端,对于dns地址,必须用zmq_connect。即:zmq_connect("tcp://localhost:port_num");

而在此时,pub端需要用zmq_bind连接,发送消息。具体原因不详。

 

pub端代码如下:

  const string host = string("tcp://127.0.0.1:5803");
  const string topic("gnss_sensor");
  void *context = zmq_ctx_new();
  assert(nullptr != context);
  void *socket = zmq_socket(context, ZMQ_PUB);
  assert(nullptr != socket);
  int recv_timeout = 5000;
  int rc =
      zmq_setsockopt(socket, ZMQ_RCVTIMEO, &am
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值