2011-12-09 100 views
0

我有這個。但它只能在本地使用。我運行客戶端時總會收到連接超時。 服務器上的端口對默認安全組是開放的。服務器與亞馬遜EC2實例與python通信?

server.py:

import SocketServer 

class MyTCPHandler(SocketServer.BaseRequestHandler): 
    def handle(self): 
     self.data = self.request.recv(1024).strip() 
     print self.client_address 
     print self.data 
     self.request.send(self.data.upper()) 

if __name__ == "__main__": 
    HOST, PORT = "", 9800 
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) 
    server.serve_forever() 

client.py:

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.sendto('Hello, world\n'('host.ip', 9800)) 
data = s.recv(1024) 
s.close() 

回答

0

看起來像你打開端口9800,但說話的端口9999

+0

非常正確 - 我錯誤地寫下了我的例子。我很抱歉,我糾正了它。 – Glycerine

0

的代碼工作正常。使用源你的端口添加到列表中...

-

網絡和安全選項卡內的AWS控制檯中選擇安全組和「入境」選項卡下的默認安全配置文件內0.0.0.0/0將在所有端口上收聽。

1

你使用socket.SOCK_DGRAM這是UDP,但使用的是TCP 服務器(這將是socket.SOCK_STREAM)客戶端。