c++ zmq pull push模式
时间: 2023-07-23 12:25:57 浏览: 139
c++ ZMQ 接受发送端
在C++中使用ZeroMQ的PULL-PUSH模式,可以实现多个进程之间的消息传递。下面是一个简单的例子:
PUSH进程:
```c++
#include <zmq.hpp>
#include <string>
#include <iostream>
int main () {
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_PUSH);
socket.bind("tcp://*:5557");
while (true) {
std::string message = "Hello";
zmq::message_t request (message.size());
memcpy (request.data (), message.c_str (), message.size ());
socket.send (request);
}
return 0;
}
```
PULL进程:
```c++
#include <zmq.hpp>
#include <iostream>
int main () {
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_PULL);
socket.connect ("tcp://localhost:5557");
while (true) {
zmq::message_t request;
socket.recv (&request);
std::string message = std::string(static_cast<char*>(request.data()), request.size());
std::cout << "Received message: " << message << std::endl;
}
return 0;
}
```
在上面的例子中,PUSH进程绑定了本地5557端口,并且不断地发送消息。PULL进程连接到这个端口,并且不断地接收消息。当PULL进程接收到消息时,它会打印出来。
需要注意的是,这里使用的是TCP协议传输消息。如果两个进程在同一台机器上运行,可以使用in-process协议,它比TCP协议更快。
阅读全文