gpt4 book ai didi

GCE : connection failed because connected host has failed to respond 上的 Python

转载 作者:行者123 更新时间:2023-12-03 11:52:46 33 4
gpt4 key购买 nike

我一直在从事一个需要在服务器(托管在 GCE 上)和多个客户端之间进行一些网络连接的项目。我创建了一个 Compute Engine 实例来运行 Python 脚本,如以下视频所示:https://www.youtube.com/watch?v=5OL7fu2R4M8 .
这是我的服务器端脚本:

server = socket.gethostbyname(socket.gethostname()) # 10.128.X.XXX which is the Internal IP
print(server)
port = 5555
clients = 0

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((server, port))

s.listen(2)
print("Waiting for connection...")

while True:
conn, addr = s.accept()
print("Connected to: ", addr)

conn.send(str.encode(f"{clients}"))
clients += 1
这是我的客户端脚本:
class Network:
def __init__(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server = "10.128.0.2"
self.port = 5555
self.addr = (self.server, self.port)
self.id = int(self.connect())

def connect(self):
self.client.connect(self.addr)
return self.client.recv(2048).decode()

network = Network()
print(f"Connected as client {network.id}")

我知道这个脚本可以工作,因为我已经用我的计算机作为服务器和 1 个客户端以及另一台计算机作为第二个客户端对其进行了测试。但是当我使用 GCE 作为服务器时,我在客户端脚本中得到了这个错误:
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
这可能是因为我使用的是内部 IP 地址而不是外部 IP 地址吗?
在此之后,我尝试更改 GCE 的防火墙设置(添加了“python-socket”),这就是它们的样子:
enter image description here
但是错误仍然存​​在...
正如 W_B 所回答的那样,我尝试在我的 VM 上运行这些命令并得到以下输出:
enter image description here
enter image description here
enter image description here

最佳答案

从你的描述可以看出是连接问题。
首先,您必须检查您创建的防火墙规则是否仍然存在。 如果它“太宽泛”并且允许非常广泛的访问,那么即使您不知道它也可能会被自动删除。它在您的屏幕截图上,但请再次检查以确保。
如果有,请选择您要使用的协议(protocol)(我假设它是 TCP)- some protocols are always blocked by default通过 GCP(您无法更改此设置),因此创建允许“任何协议(protocol)”的规则是有风险的。另外 - 放置一个或两个目标 IP(不是全部在此 VPC 中) - 这不是必须的,但可以提高网络的安全性。
其次 - 确保您尝试连接的端口 5555 可以从其他计算机访问。您可以使用 nmap -p 5554 put.server.ip.here 扫描目标主机
您可以从 Internet 或同一 VPC 网络中的其他 VM 对其进行扫描。
你应该得到这样的东西:

root@localhost:~$ nmap -p 443 192.168.1.6
Starting Nmap 7.70 ( https://nmap.org ) at 2020-06-25 17:12 UTC
Nmap scan report for 192.168.1.6
Host is up (0.00091s latency).

PORT STATE SERVICE
443/tcp open https

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
如果您看到 5555/tcp filtered freeciv这意味着有东西阻塞了端口。
在服务器上运行 nmap(我假设您运行某个版本的 Linux),如果您不想安装任何非必要软件,您可以使用 sudo netstat -tulpn | grep LISTEN获取开放端口列表(5555 应该在列表中)。
还要确保服务器上的防火墙不会阻止此端口。 You can use iptables 为了那个原因。

关于GCE : connection failed because connected host has failed to respond 上的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62568636/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com