C++

C++

cppzmq

Github https://github.com/zeromq/cppzmq

libzmq 的纯头文件 C++ 绑定。

示例

#include <string>
#include <zmq.hpp>
int main()
{
   zmq::context_t ctx;
   zmq::socket_t sock(ctx, zmq::socket_type::push);
   sock.bind("inproc://test");
   const std::string_view m = "Hello, world";
   sock.send(zmq::buffer(m), zmq::send_flags::dontwait);
}

zmqpp

Github https://github.com/zeromq/zmqpp

这个 0mq/zmq 的 C++ 绑定是一个“高级”库,它隐藏了 0mq 核心提供的 C 风格接口的大部分内容。它由位于 zmq 目录中的许多头文件和源文件组成,这些文件根据 MPLv2 许可证提供(详见 LICENSE)。

azmq

Github https://github.com/zeromq/azmq

azmq 库为 ZeroMQ 提供了 Boost Asio 风格的绑定。

示例

#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;
}

czmqpp

Github https://github.com/zeromq/czmqpp

czmq 的 C++ 包装器。目标是保持最小化、简单和一致。