3
マイ(パイソン)出版社:(GTESTで実行している)私のC++ ZeroMQ加入者は何のデータも受け取らないのですか?
import zmq
import time
context = zmq.Context()
socket = context.socket(zmq.PUB)
connectStr = "tcp://*:%d" % 5563
socket.bind(connectStr)
messageNum = 0
while True:
++messageNum
message = "Testing %d"%messageNum
print("Sending.. '%s'"%message)
socket.send_string(message)
time.sleep(1)
messageNum += 1
マイ(C++)加入者:
TEST(ZeroMqPubSubTest, SubscribeGetsData)
{
// Set up the subscriber we'll use to receive the message.
zmq::context_t context;
zmq::socket_t subscriber(context, ZMQ_SUB);
// Connect to the publisher
subscriber.connect("tcp://127.0.0.1:5563");
subscriber.setsockopt(ZMQ_SUBSCRIBE, ""); // Set the filter blank so we receive everything
zmq::message_t response(0);
EXPECT_TRUE(subscriber.recv(&response));
}
私は加入者を起動し、その後、パブリッシャを起動します。後者は決して戻ってこない。
私は正常に動作..itやっPythonの加入者(私は思った)まったく同じこと..
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect ("tcp://127.0.0.1:5563")
socket.setsockopt_string(zmq.SUBSCRIBE, "")
print ("Waiting for data...")
while True:
message = socket.recv()
print ("Got some data:",message)
実行する場合:
データを待っているの...
いくつかのデータがあります:b'Testing 8 '
いくつかのデータがあります:b'Testing 9'
スポット:ゼロサイズのデータ型を使用し、また
:空の文字列を渡すために、あなたは、2番目のオーバーロードを使用し、0の長さを指定する必要があります。私はまだZeroMQで微妙なことを学んでいますが、特にcppインターフェイスにはいくつかの問題点があります。 –