C++ zmq pull push模式 单条数据发收
时间: 2023-10-09 10:08:58 浏览: 73
对于使用 ZeroMQ(zmq)的 Pull-Push 模式,你可以通过以下步骤实现单条数据的发送和接收:
1. 启动 Push 端和 Pull 端,分别创建 socket,并绑定到对应的地址上。
```c++
// Push 端
zmq::context_t context(1);
zmq::socket_t push_socket(context, ZMQ_PUSH);
push_socket.bind("tcp://*:5555");
// Pull 端
zmq::context_t context(1);
zmq::socket_t pull_socket(context, ZMQ_PULL);
pull_socket.bind("tcp://*:5556");
```
2. 在 Push 端,使用 `zmq::send()` 函数发送数据。注意,该函数需要传入一个 `zmq::message_t` 类型的消息对象,该对象可以通过 `zmq::message_t(const void* data, size_t size)` 构造函数来创建。
```c++
// Push 端发送数据
std::string msg = "Hello world!";
zmq::message_t message(msg.size());
memcpy(message.data(), msg.c_str(), msg.size());
push_socket.send(message);
```
3. 在 Pull 端,使用 `zmq::recv()` 函数接收数据。该函数会返回一个 `zmq::message_t` 类型的消息对象,其中包含接收到的数据。
```c++
// Pull 端接收数据
zmq::message_t message;
pull_socket.recv(&message);
std::string msg(static_cast<char*>(message.data()), message.size());
std::cout << "Received message: " << msg << std::endl;
```
以上就是使用 ZeroMQ 实现 Pull-Push 模式单条数据发送和接收的基本步骤。需要注意的是,在实际使用中,还需要对数据进行序列化和反序列化操作,以确保数据可以正确传输。
阅读全文