Паб ZeroMQ отправляет пустую строку

У меня есть простой C ++ PUB и python SUB, настроенный на то, чтобы в конечном итоге C ++ был построен как простая DLL. У меня был некоторый предыдущий опыт работы с подобными настройками с python с обеих сторон, и никаких проблем. Я, однако, абсолютный нуб C ++.

Мой код C ++:

#define ZMQ_EXPORT

#include "stdafx.h"#include "zmq.hpp"
int _tmain(int argc, _TCHAR* argv[]) {
zmq::context_t context(1);
zmq::socket_t publisher(context, ZMQ_PUB);
publisher.bind("tcp://*:6666");

zmq::message_t message(5);
memcpy(message.data(), "Hello", 5);

while(true) {
Sleep(500);
publisher.send(message);
}

return 0;
}

Результат из сценария Python SUB для recv_multipart ():

[ »]

Я уверен, что это работает иначе, хотя я думаю, что есть недостаток в том, как я делаю memcpy.

1

Решение

Я думаю, что вы пропустили всю подписку часть паба / саба

Вам нужно дать PUB-сообщение какой-то фильтр сообщений. Это также означает, что ваш SUB должен сделать setsockopt чтобы иметь возможность получать сообщения.

Приведенный вами пример показывает, что на самом деле у вас нет фильтра сообщений для вашего сообщения PUB (или, скорее, ваш «Hello» — это ваш фильтр сообщений, а сообщение с данными фактически является пустой строкой).

3

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

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

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