zmq dealer router 传输一个 vector<string>
时间: 2023-08-12 21:05:18 浏览: 153
ZeroMQ传输数据
在 ZeroMQ 中,使用 DEALER 和 ROUTER socket 可以实现多对多的异步通信,其中 DEALER socket 可以发送和接收消息,而 ROUTER socket 可以将消息路由到指定的 DEALER socket 上。
如果要发送一个 vector<string>,可以考虑使用 ZeroMQ 的 Message API,将 vector<string> 打包成一个 ZeroMQ 消息。具体步骤如下:
1. 在发送端,将 vector<string> 转换为 ZeroMQ 消息,并使用 DEALER socket 发送:
```cpp
std::vector<std::string> vec = {"hello", "world"};
zmq::message_t msg(vec.size() * sizeof(std::string));
memcpy(msg.data(), vec.data(), vec.size() * sizeof(std::string));
dealer_socket.send(msg);
```
2. 在接收端,使用 ROUTER socket 接收消息,并解析出 vector<string>:
```cpp
zmq::message_t msg;
router_socket.recv(&msg);
std::vector<std::string> vec(msg.size() / sizeof(std::string));
memcpy(vec.data(), msg.data(), msg.size());
```
注意,在发送和接收消息时,需要保证 DEALER 和 ROUTER socket 上的消息顺序一致。如果要发送多个 vector<string>,可以考虑在消息头部添加一个标识符,以便在接收端正确解析消息。
阅读全文