Я пытаюсь отправить сообщение, состоящее из нескольких частей, в гнездо 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 сокет.
Можете ли вы помочь мне указать, что происходит не так?