【发布时间】:2019-06-10 18:29:54
【问题描述】:
我尝试在 ZMQ Radio 套接字上发送多部分消息,但收到 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 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;
}
}
在这种情况下,zmq_msg_send 的返回码是 -1,zmq_errno() 返回 22 (EINVAL)。
如果我将发送命令替换为:
int rc = zmq_msg_send(&msg, radio, 0);
然后我得到 rc=6 并且我能够通过我的 Dish 套接字读取(单部分)消息。
你能帮我指出哪里出了问题吗?
【问题讨论】: