首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用ZeroMQ和Boost::ASIO

结合使用ZeroMQ和Boost::ASIO
EN

Stack Overflow用户
提问于 2012-10-11 05:53:34
回答 5查看 8.9K关注 0票数 25

我有一个使用ZeroMQ进行消息传递的C++应用程序。但它还必须为基于AJAX / Comet的web服务提供SGCI连接。

为此,我需要一个普通的TCP套接字。我可以通过普通的Posix插口做到这一点,但为了保持跨平台可移植性,并使我的生活变得更容易(我希望...)我在考虑使用Boost::ASIO。

但是现在我遇到了ZMQ想要使用它自己的zmq_poll()和ASIO它的io_service.run()的冲突……

有没有办法让ASIO与0MQ zmq_poll()协同工作?

或者有没有其他推荐的方法来实现这样的设置?

注意:我可以通过使用多个线程来解决这个问题--但它只是一个很小的单核/ CPU机器,它将以非常低的SCGI通信量运行该程序,所以多线程将是对资源的浪费……

EN

Stack Overflow用户

发布于 2019-04-04 22:46:33

这个问题提出2年后,有人发布了一个项目,就是这样做的。这个项目在这里:https://github.com/zeromq/azmq。讨论该设计的博客帖子在这里:https://rodgert.github.io/2014/12/24/boost-asio-and-zeromq-pt1/

下面是从自述文件中复制的示例代码:

代码语言:javascript
复制
#include <azmq/socket.hpp>
#include <boost/asio.hpp>
#include <array>

namespace asio = boost::asio;

int main(int argc, char** argv) {
    asio::io_service ios;
    azmq::sub_socket subscriber(ios);
    subscriber.connect("tcp://192.168.55.112:5556");
    subscriber.connect("tcp://192.168.55.201:7721");
    subscriber.set_option(azmq::socket::subscribe("NASDAQ"));

    azmq::pub_socket publisher(ios);
    publisher.bind("ipc://nasdaq-feed");

    std::array<char, 256> buf;
    for (;;) {
        auto size = subscriber.receive(asio::buffer(buf));
        publisher.send(asio::buffer(buf));
    }
    return 0;
}

看起来不错。如果您尝试,请在评论中让我知道它在2019年I will probably try in a couple of months and then update this answer中是否仍然有效

票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12829005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档