我如何使用zeromq在AWS上进行广播

时间:2014-01-13 11:16:08

标签: python amazon-web-services zeromq

我刚写了一个非常简单的python脚本,就像这样

服务器端:

import zmq
import time

cxt = zmq.Context()
s=cxt.socket(zmq.SUB)
s.bind("tcp://0.0.0.0:1900")

while True:
   s.send("CMD:once")
   print "send once"
   time.sleep(1)

和客户方:

import zmq
import time

cxt = zmq.Context()
s = cxt.socket(zmq.SUB)

s.connect("tcp://127.0.0.1:1900")
s.setsockopt(zmq.SUBSCRIBE,'')

while True:
    msg = s.recv()
    print msg

print "Done".

当我在客户端脚本中使用127.0.0.1时,我工作。但是当我使用公共网络IP地址时,我的客户端脚本无法接收任何消息。

两个脚本都在VPS(亚马逊网络服务)上运行。

我需要在AWS上进行一些设置吗?

1 个答案:

答案 0 :(得分:1)

您需要使用EC2实例的私有 IP。 EC2中的公共IP由NAT映射提供,实例无法以这种方式看待自己。

您还可以使用 public DNS主机名,如控制台中所示,因为它将在内部查询时解析为专用IP,并在外部查询时解析为公共IP。