Python套接字连接挂在不同的实例上,但可在同一实例上工作

时间:2019-01-23 22:41:49

标签: python amazon-web-services sockets

我目前正在使用两个不同的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()应该返回一个可以从公共访问的值,所以我认为我的主机地址没有错。端口号也正确。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我的问题是我丢失了一个TCP规则,但源允许“ Anywhere”。我的印象是,ICMP是分配任务时唯一需要的规则,但事实并非如此。感谢您的帮助。