0

Publish-Subscribe 方法在以下情况下是否有效:

  1. 发布者和订阅者位于不同的网络中(我检查过一次 - 它有效)
  2. 订阅者在 NAT\firewall 后面

在这两种情况下,数据包路由都能正常工作。

据我了解 PUB\SUB 使用相同的 TCP 传输,所以如果 PUB\SUB 不起作用,那么标准 Windows winsock 也不起作用?如果仅未定义数据包路由机制,是否需要PUB\SUB 代理(如http://zguide.zeromq.org/page:all#toc34 )?

4

1 回答 1

0

我发现一些代码使用 PUB\SUB 模型并在此处与 NAT 一起使用http://grokbase.com/t/zeromq/zeromq-dev/112q9934vg/nat-firewall-pub-sub-traversal

连接而不是绑定的发布者:

import zmq
ctxt = zmq.Context()
pub = ctxt.socket(zmq.PUB)
pub.connect("tcp://127.0.0.1:2000")
while 1:
pub.send(os.urandom(5))

绑定而不是连接的订阅者:

import zmq
ctxt = zmq.Context()
sub = ctxt.socket(zmq.SUB)
sub.bind("tcp://127.0.0.1:2000")
while 1:
sub.rcv()
于 2012-11-04T11:49:26.290 回答