C++使用zmq 实现 dealer 和router 客户端发送,服务端接收但不回复的代码,不需要验证
时间: 2024-03-29 15:39:26 浏览: 131
C++ zmq通信,req方式和pub方式
以下是使用C++和zmq实现dealer和router模式的客户端发送和服务端接收但不回复的示例代码:
服务端代码:
```cpp
#include <zmq.hpp>
#include <iostream>
int main()
{
zmq::context_t context(1);
zmq::socket_t socket(context, zmq::socket_type::router);
socket.bind("tcp://*:5555"); // 绑定端口
while (true)
{
zmq::message_t identity_msg, request_msg;
socket.recv(&identity_msg); // 接收客户端的身份信息
socket.recv(&request_msg); // 接收客户端的请求消息
std::string identity(static_cast<char*>(identity_msg.data()), identity_msg.size());
std::string request(static_cast<char*>(request_msg.data()), request_msg.size());
std::cout << "Received request from " << identity << ": " << request << std::endl;
// 不回复客户端
}
return 0;
}
```
客户端代码:
```cpp
#include <zmq.hpp>
#include <iostream>
int main()
{
const std::string endpoint = "tcp://localhost:5555";
zmq::context_t context(1);
zmq::socket_t socket(context, zmq::socket_type::dealer);
// 设置客户端的身份信息
std::string identity = "client1";
socket.setsockopt(ZMQ_IDENTITY, identity.data(), identity.size());
socket.connect(endpoint);
// 发送请求消息
std::string request = "Hello, server!";
zmq::message_t request_msg(request.size());
memcpy(request_msg.data(), request.data(), request.size());
socket.send(request_msg, zmq::send_flags::none);
// 不需要接收回复消息
return 0;
}
```
在上述代码中,服务端使用router模式,绑定端口并接收客户端的身份信息和请求消息,但不回复客户端。客户端使用dealer模式,设置自己的身份信息后连接服务端,发送请求消息但不需要接收回复消息。
阅读全文