問題は、サブスクライバにメッセージが記録されていないことです。 ZeroMQフィルターに問題があると思います。私は、c++
に.setsockopt()
を正しく使用してpythonパブリッシャーからのメッセージを受け取る方法を理解できません。
Pythonの出版社:
import zmq
context = zmq.Context()
socket = context.socket(zmq.PUB)
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:4004")
while True:
command = input("insert command ")
if (command=='c'):
topic = "CALL".encode("ascii")
data = "blabla".encode("ascii")
socket.send_multipart([topic,data])
C++
加入者:
#include "zhelpers.hpp"
zmq::context_t context(1);
zmq::socket_t subscriber1 (context, ZMQ_SUB);
subscriber1.connect("tcp://127.0.0.1:4004");
subscriber1.setsockopt(ZMQ_SUBSCRIBE, "CALL", 4);
while (1) {
// read envelope
std::string address = s_recv (subscriber1);
// read message
std::string contents = s_recv (subscriber1);
std::cout << "[" << address << "] " << contents << std::endl;
Pythonの加入者が罰金workkingされます。コード:docsから
subscriber = context.socket(zmq.SUB)
subscriber.connect("tcp://127.0.0.1:4004")
subscriber.setsockopt(zmq.SUBSCRIBE, b"CALL")
[command, contents] = self.subscriber.recv_multipart()
「py3」と「C++」の両方が同じバージョンのZeroMQ API仕様を使用していることを確認できますか?メッセージヘッダーのサイズ/マッピングにおける最近の動きは、古いバージョンの 'C++'バインディングの動作を無効にした可能性があります。 – user3666197
はい、正しく、バージョンが一致しません。 –
**嬉しかったです**。自由にお気軽に**お楽しみください**他の** 'ZeroMQ'答え** >>> http://stackoverflow.com/search?tab=votes&q=user%3a3666197%20%5bzeromq%5d – user3666197