ZeroMQ python в c ++ Pub / Sub - PullRequest
       22

ZeroMQ python в c ++ Pub / Sub

1 голос
/ 17 апреля 2020

У меня есть код ниже python, который успешно работает в сценарии python - python PUB / SUB ZeroMQ (pyzmq).

Можно ли подписать этот python сервер через c ++?

Я также добавил клиентский код на C ++, который не работал.

Python:

def send_array_and_str(socket, img, string, flags=0):
    global count
    print(count , "  sended")
    ## numpy array gönderirken shape bilgilerini de msg olarak eklemek lazım
    md = dict(dtype=str(img.dtype), shape=img.shape)
    socket.send_string(str(count), flags | zmq.SNDMORE)
    socket.send_string(string, flags | zmq.SNDMORE)

    socket.send_json(md, flags | zmq.SNDMORE)
    socket.send(img, flags)
    count += 1
    # print(count)
    return


context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5667")

C ++

zmq::socket_t subscriber (context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5556");

zmq::message_t update;
subscriber.recv(&update);

total_temp += temperature;

1 Ответ

0 голосов
/ 18 апреля 2020

Q : «Могу ли я подписать этот python сервер через c ++?»

Да, конечно, вы можете.

Представленный выше клиентский код не работал, ну, на самом деле, он работал, как определено API, так как вы подписали сторону SUB ни к чему.

Итак он действительно ничего не получил, полностью соответствует и соответствует документированному API ZeroMQ.


Если кто-то никогда не работал с ZeroMQ,
здесь можно с первого взгляда посмотреть "ZeroMQ Принципы менее чем за Пять секунд "
, прежде чем углубляться в подробности



Было бы также полезно направить .connect() -метод к тому же port# ~ 5667, если вы sh SUB чтобы когда-нибудь доставить что-то значимое оттуда, служа PUB, не так ли?

...