我目前正在使用两个不同的AWS实例来尝试使用两个python文件进行通信,一个是客户端,一个是服务器。一个实例(服务器)具有服务器文件和客户端文件的副本。另一个实例Client只有客户端文件的副本。
问题是,当我在服务器实例上运行客户端文件时,它按预期工作。但是,当我在客户端实例上运行客户端文件时,该文件挂在socket.connect调用上。
server.py
<OtherComponent content={foo}/>
client.py
<Object type> hello world
我也在我的AWS实例上检查了我的安全组。他们两个都有相同的安全组,其中包括:
import socket
# create a socket object
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# get local machine name. I have also used ''
host = socket.gethostname()
# I use this print to set the host name in the client file.
print(host)
port = 12000
# bind to the port
serversocket.bind((host, port))
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
msg='Thank you for connecting'+ "\r\n"
clientsocket.send(msg.encode('ascii'))
clientsocket.close()
我认为应该可以让事情正常运行。
我不确定哪里可能出错。我确定两个客户端文件都相同,并且两个服务器具有相同的安全组。我读到socket.gethostname()应该返回一个可以从公共访问的值,所以我认为我的主机地址没有错。端口号也正确。任何帮助将不胜感激。
答案 0 :(得分:0)
我的问题是我丢失了一个TCP规则,但源允许“ Anywhere”。我的印象是,ICMP是分配任务时唯一需要的规则,但事实并非如此。感谢您的帮助。