C++ zmq pull push模式 不定条数据发收
时间: 2024-03-20 11:44:51 浏览: 181
在 ZeroMQ 中,使用 push-pull 模式时,发送方可以发送任意数量的消息,接收方可以接收任意数量的消息。如果您想在接收方接收不定量的数据,可以使用循环来不断接收消息,直到您认为接收完毕为止。
以下是一个示例代码,演示了如何在 C++ 中使用 ZeroMQ 的 push-pull 模式来发送和接收不定数量的消息:
**发送方**
```cpp
#include <zmq.hpp>
#include <iostream>
#include <string>
int main() {
zmq::context_t context(1);
zmq::socket_t sender(context, ZMQ_PUSH);
sender.bind("tcp://*:5555");
// 发送任意数量的消息
for (int i = 0; i < 10; ++i) {
std::string message = "message " + std::to_string(i);
zmq::message_t msg(message.size());
memcpy(msg.data(), message.c_str(), message.size());
sender.send(msg);
}
return 0;
}
```
**接收方**
```cpp
#include <zmq.hpp>
#include <iostream>
#include <string>
int main() {
zmq::context_t context(1);
zmq::socket_t receiver(context, ZMQ_PULL);
receiver.connect("tcp://localhost:5555");
// 接收任意数量的消息
int i = 0;
while (true) {
zmq::message_t msg;
receiver.recv(&msg);
std::string message(static_cast<char*>(msg.data()), msg.size());
std::cout << "Received message " << i++ << ": " << message << std::endl;
// 判断是否接收完毕
if (message == "last message") {
break;
}
}
return 0;
}
```
在上面的示例代码中,发送方使用 for 循环发送了 10 条消息,接收方使用 while 循环接收任意数量的消息,直到接收到最后一条消息为止。如果您想在接收方接收不定量的数据,只需将 `if (message == "last message")` 的判断条件修改为您自己的判断条件即可。
阅读全文