用Python与Amazon EC2实例通信的服务器?
我有这个代码。但是它只在本地能用。当我运行客户端时,总是收到连接超时的错误。
服务器的端口已经对默认的安全组开放了。
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()
3 个回答
0
这段代码运行得很好。
在AWS控制台中,找到网络与安全选项卡,选择安全组,然后在默认的安全配置里,点击'inbound'选项卡 - 把你的端口加到列表里...
使用0.0.0.0/0
作为来源会监听所有端口。
0
看起来你是在打开9800端口,但实际上却是在和9999端口交流。
1
在客户端,你使用的是 socket.SOCK_DGRAM
,这代表的是UDP协议,但你却在使用TCP服务器(这应该是 socket.SOCK_STREAM
)。