2014-01-13 55 views
0

直播我只是寫了一個非常簡單的Python腳本這樣如何使用zeromq對AWS

服務器端:

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

您需要使用專用 EC2實例的IP。 EC2中的公共IP由NAT映射提供,並且實例不能以這種方式看到它自己。

您也可以使用公開的 DNS主機名,如控制檯中所示,因爲在內部查詢時它將解析爲私有IP,而在外部查詢時將解析爲公共IP。