C++ ZMQ收音机/天线无法发送多部分信息
我试图在ZMQ无线电插座上发送多部分消息,但收到一个EINVAL错误(无效参数)。以下是发送消息第一部分的代码:C++ ZMQ收音机/天线无法发送多部分信息,c++,zeromq,C++,Zeromq,我试图在ZMQ无线电插座上发送多部分消息,但收到一个EINVAL错误(无效参数)。以下是发送消息第一部分的代码: #include <iostream> #include <cstring> #include "ZmqRadio.h" using namespace std; int main() { auto addr = "udp://127.0.0.1:4444"; auto myGroup = "myGroup"; std::string dat
#include <iostream>
#include <cstring>
#include "ZmqRadio.h"
using namespace std;
int main() {
auto addr = "udp://127.0.0.1:4444";
auto myGroup = "myGroup";
std::string data = "Hello";
void *context = zmq_ctx_new();
void *radio = zmq_socket(context, ZMQ_RADIO);
zmq_connect(radio, addr);
zmq_msg_t msg;
zmq_msg_init_size(&msg, 5);
zmq_msg_set_group(&msg, myGroup);
memcpy(zmq_msg_data(&msg), &data[0], 5);
int rc = zmq_msg_send(&msg, radio, ZMQ_SNDMORE);
if (rc == -1) {
int err = zmq_errno();
cout << "Error: " << err << endl;
}
}
然后我得到rc=6,我能够通过我的碟形插座读取(单部分)信息
你能帮我指出哪里出了问题吗?
- 使用另一个消息结构来打包您的帧(可能是msgpack),然后作为单个消息通过无线天线发送
- 切换到ZMQ_PUB/ZMQ_SUB。这里的缺点是您需要使用TCP或PGM作为传输
int rc = zmq_msg_send(&msg, radio, 0);