Sockets ZeroMQ在NAT/防火墙后面的不同网络中使用发布-订阅模式

Sockets ZeroMQ在NAT/防火墙后面的不同网络中使用发布-订阅模式,sockets,networking,zeromq,Sockets,Networking,Zeromq,发布-订阅方法在以下情况下是否有效: 发布者和订阅者在不同的网络中(我检查过一次-它可以工作) 订阅者在NAT\防火墙后面 在这两种情况下,数据包路由都能正常工作 据我所知,PUB\SUB使用相同的TCP传输,所以如果PUB\SUB不工作,那么标准windows winsock也不工作? 如果只定义了未定义的数据包路由机制,是否需要PUB\SUB代理(类似于此)?我发现一些代码使用PUB\SUB模型并在此处与NAT一起工作: 连接而不是绑定的发布服务器: import zmq ctxt = zm

发布-订阅方法在以下情况下是否有效:

  • 发布者和订阅者在不同的网络中(我检查过一次-它可以工作)
  • 订阅者在NAT\防火墙后面
  • 在这两种情况下,数据包路由都能正常工作

    据我所知,PUB\SUB使用相同的TCP传输,所以如果PUB\SUB不工作,那么标准windows winsock也不工作?
    如果只定义了未定义的数据包路由机制,是否需要PUB\SUB代理(类似于此)?

    我发现一些代码使用PUB\SUB模型并在此处与NAT一起工作:

    连接而不是绑定的发布服务器:

    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()