У меня есть простой 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.
Я думаю, что вы пропустили всю подписку часть паба / саба
Вам нужно дать PUB-сообщение какой-то фильтр сообщений. Это также означает, что ваш SUB должен сделать setsockopt
чтобы иметь возможность получать сообщения.
Приведенный вами пример показывает, что на самом деле у вас нет фильтра сообщений для вашего сообщения PUB (или, скорее, ваш «Hello» — это ваш фильтр сообщений, а сообщение с данными фактически является пустой строкой).
Других решений пока нет …