C++使用zmq 实现 dealer 和router 客户端发送消息,服务端接收但不回复的代码
时间: 2024-03-26 20:40:11 浏览: 70
C++ zmq通信,req方式和pub方式
以下是使用C++和ZMQ库实现Dealer和Router模式的代码示例,其中客户端发送消息到服务端,但服务端不回复消息。
Dealer客户端代码:
```cpp
#include <zmq.hpp>
#include <string>
#include <iostream>
int main () {
zmq::context_t context(1);
zmq::socket_t dealer(context, ZMQ_DEALER);
dealer.connect("tcp://localhost:5555");
std::string message = "Hello from Dealer client";
zmq::message_t request(message.size());
memcpy(request.data(), message.c_str(), message.size());
dealer.send(request);
std::cout << "Message sent from Dealer client: " << message << std::endl;
return 0;
}
```
Router服务端代码:
```cpp
#include <zmq.hpp>
#include <string>
#include <iostream>
int main () {
zmq::context_t context(1);
zmq::socket_t router(context, ZMQ_ROUTER);
router.bind("tcp://*:5555");
while (true) {
zmq::message_t identity;
zmq::message_t request;
router.recv(&identity);
router.recv(&request);
std::string message(static_cast<char*>(request.data()), request.size());
std::cout << "Received message by Router server: " << message << std::endl;
}
return 0;
}
```
在上面的代码中,Dealer客户端连接到Router服务端,并发送一条消息。Router服务端使用`zmq::recv`方法接收来自Dealer客户端的消息,并将其打印到控制台上。但是,Router服务端不会向客户端发送任何回复消息。
需要注意的是,这只是一个简单的示例,实际应用中需要更加完整和健壮的代码来处理不同的情况和错误。
阅读全文