[英]Zeromq Broadcast All to All
什么是进行全面沟通的最佳方式,最好是做一个pub-sub,每个人都订阅其他人,或者是否有更适合这种情况的套接字类型?
您可以使用XPUB / XSUB代理实现此目的; 许多客户与许多其他客户交谈; 这里的指南概述。
代理充当连接多对多客户端的中介; 来自expresso.c的例子。 代理独立运行:
void *subscriber = zsocket_new (ctx, ZMQ_XSUB);
zsocket_bind (subscriber, "tcp://*:6000");
void *publisher = zsocket_new (ctx, ZMQ_XPUB);
zsocket_bind (publisher, "tcp://*:6001");
zmq_proxy (subscriber, publisher, 0);
客户端同时扮演发布者和订阅者的角色。 在主线程中,创建一个pub套接字,将其连接到代理的XSUB端; 用它来发送消息。
void *publisher = zsocket_new (ctx, ZMQ_PUB);
zsocket_connect (publisher, "tcp://localhost:6000");
现在,您将要在客户端中创建一个子线程,以侦听来自XPUB上代理的消息:
void *subscriber = zsocket_new (ctx, ZMQ_SUB);
zsocket_connect (subscriber, "tcp://localhost:6001");
当客户端发布消息时,所有侦听XSUB的客户端都会获取它,包括发送消息的客户端,因此请记住这一点。
如果您不需要双向消息传递,请实现PubClient和SubClient,每个都扮演发送或接收的预期角色,但不是两者; 上述客户端代码将简单地分为两种类,用于该方法。
同样,还有其他方法可以做到这一点,但这是最直接的。 希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.