假设将有三个(可以是任意数量)的发布者(在不同的Exe上运行),他们分别发布到127.0.0.1:1234,127.0.0.1:1235,127.0.0.1:1236。
目前,我可以使用
连接Pub-Subsubscriber.Connect("tcp://127.0.0.1:22223");
如何连接3个订阅者。对不起,我阅读了指南,他们说我可以使用我尝试失败的subscriber.Connect
答案 0 :(得分:3)
除ZMQ_PAIR套接字外,单个套接字可能是 使用zmq_connect()连接到多个端点,而 同时接受来自多个端点的传入连接 使用zmq_bind()绑定到套接字。
所以这应该是可能的,如果不可能,可能是由于您正在使用的实施问题。使用NetMQ的以下示例适用于我:
private static NetMQContext _context = NetMQContext.Create();
public static void Main(string[] args)
{
Thread publish1 = new Thread(() => Publish(5000));
Thread publish2 = new Thread(() => Publish(5001));
publish1.Start();
publish2.Start();
Subscribe();
}
private static void Publish(ushort port)
{
using (NetMQSocket socket = _context.CreatePublisherSocket())
{
socket.Bind("tcp://127.0.0.1:" + port);
while (true)
{
socket.Send("Hello from " + port);
Thread.Sleep(1000);
}
}
}
private static void Subscribe()
{
using (NetMQSocket socket = _context.CreateSubscriberSocket())
{
socket.Connect("tcp://127.0.0.1:5000");
socket.Connect("tcp://127.0.0.1:5001");
socket.Subscribe("");
while (true)
{
Console.WriteLine(socket.ReceiveString());
}
}
}
这会产生以下输出:
Hello from 5000
Hello from 5001
Hello from 5000
Hello from 5001
[...]