无法使用python通过tcp连接到我的谷歌云虚拟机实例

问题描述 投票:0回答:3

情况

我用Python写了一个简单的程序。这是一个简单的套接字聊天程序。在我的程序中,客户端只需连接到一个地址(ip、端口)并发送一条消息,而此时服务器已准备好并接收消息并打印它。我可以保证程序是正确的,因为我在我的电脑上试过了。

我在Google Cloud Platform上有一个VM实例,我可以通过ssh进行操作,这是Google Cloud提供的一种简单方式。我可以确保服务器正在运行。

问题

我在我的谷歌云服务器上启动了一个简单的tcp服务器、python程序。然后我在计算机上启动客户端程序。但我收到这个错误:

ConnectionRefusedError: [WinError 10061] 由于目标机器主动拒绝而无法建立连接

或同等中文:

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

如何解决这个问题并连接到我的谷歌云服务器?

我猜可能是防火墙拒绝了我的计算机的连接,但不知道如何解决。

python server google-cloud-platform google-compute-engine firewall
3个回答
5
投票

此错误意味着您的程序未侦听

0.0.0.0
端口
XYZ

检查您的程序是否正在监听

localhost
。如果更改为
0.0.0.0
,则表示所有可用网络。
localhost
表示不侦听任何网络接口,仅接受来自计算机内部的连接。

然后仔细检查端口号。

要查看是否有监听,请运行以下命令 (Linux):

netstat -at

寻找与您的港口的线路

XYZ

当您启动程序时,请确保在创建侦听器时不会出错。如果您尝试使用低于 1024 的端口号,则需要使用 root 权限启动程序。


3
投票

TCP 连接被拒绝,因为 GCP 防火墙确实阻止了它。因此,您必须创建一条防火墙规则,为 Ingress 连接打开 TCP 端口。

通过导航至 GCP Console VPC 网络部分中的防火墙规则,您可以创建防火墙规则或更新现有规则。

一种方法是标记您的GCE实例,并在创建防火墙规则时,将目标设置为此标记,至于“源过滤器”,您尝试建立连接的计算机的IP,或者简单地允许所有 IP 以 0.0.0.0/0 作为源进行连接。记得指定需要打开的TCP端口。


0
投票

此错误表示您的程序未侦听端口。

检查您的程序是否正在侦听。如果更改为,则表示所有可用的网络。表示不侦听任何网络接口,只接受来自计算机内部的连接。

然后仔细检查端口号。

要查看监听中是否有内容,请运行以下命令(Linux):netstat -at

寻找带有端口的线路。

启动程序时,请确保在创建监听器时不会出错。如果您尝试使用低于1024的端口号,则需要使用root权限启动程序。

© www.soinside.com 2019 - 2024. All rights reserved.