Нулевой подписчик MQ издателя (паб / саб)

Я реализовал простой пример pub / sub. Я отправляю простое приветственное сообщение и пытаюсь получить его у подписчика.
Мой код издателя —

std::string msg = "hello,";
zmq::message_t message(static_cast<const void*> (msg.data()), msg.size());
publisher.send(message);

Мой код подписчика —

zmq::message_t msgReceive;
subscriber.recv(&msgReceive);
const char* buffer_body = static_cast<const char*>(msgReceive.data());
printf("Message: %s\n",buffer_body);

Вывод, который я получаю, — «привет,? Тип сокета» вместо «привет»

Я не могу понять, где ошибка. Любая помощь будет оценена.

0

Решение

Попробуйте изменить эту строку

const char* buffer_body = static_cast<const char*>(msgReceive.data());

в

const char* buffer_body = static_cast<const char*>(msgReceive.data(), msgReceive.size());

Таким образом, вы можете указать C_String, где завершаться, основываясь на длине сообщения, вместо того, чтобы позволить ему завершаться самостоятельно, когда он находит первый нулевой символ.

Для получения дополнительной информации см. гид.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]