C++使用zmq 实现 dealer 和router 客户端发送,服务端接收的代码
时间: 2024-03-29 14:41:26 浏览: 111
zmq服务端客户端相互通信案例
以下是使用C++和zmq实现dealer和router模式的客户端发送和服务端接收的示例代码:
Router服务端:
```cpp
#include <zmq.hpp>
#include <iostream>
#include <string>
int main () {
zmq::context_t context(1);
zmq::socket_t router(context, ZMQ_ROUTER); // 创建router socket
router.bind("tcp://*:5555"); // 绑定地址
while (true) {
zmq::message_t identity;
zmq::message_t message;
router.recv(&identity); // 接收身份信息
router.recv(&message); // 接收消息内容
std::cout << "Received message: " << std::string(static_cast<char*>(message.data()), message.size()) << std::endl;
zmq::message_t reply(message.size());
memcpy(reply.data(), message.data(), message.size());
router.send(identity, ZMQ_SNDMORE); // 发送身份信息
router.send(reply, 0); // 回复消息
}
return 0;
}
```
Dealer客户端:
```cpp
#include <zmq.hpp>
#include <iostream>
int main () {
zmq::context_t context(1);
zmq::socket_t dealer(context, ZMQ_DEALER); // 创建dealer socket
dealer.connect("tcp://localhost:5555"); // 连接地址
std::string message("Hello, world!");
zmq::message_t request(message.size());
memcpy(request.data(), message.data(), message.size());
dealer.send(request, 0); // 发送消息
zmq::message_t reply;
dealer.recv(&reply); // 接收回复消息
std::cout << "Received reply: " << std::string(static_cast<char*>(reply.data()), reply.size()) << std::endl;
return 0;
}
```
在这个例子中,我们使用了一个router和一个dealer,router监听5555端口并等待连接,dealer连接到localhost:5555并发送“Hello, world!”消息。router接收到消息并回复相同的消息。
阅读全文