用Python与Amazon EC2实例通信的服务器?

0 投票
3 回答
1819 浏览
提问于 2025-04-17 08:02

我有这个代码。但是它只在本地能用。当我运行客户端时,总是收到连接超时的错误。

服务器的端口已经对默认的安全组开放了。

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

撰写回答