我用python写了一个简单的程序。这是一个简单的套接字聊天程序。在我的程序中,客户端仅连接到地址(ip,端口)并发送消息,而此时服务器已准备就绪,可以接收并打印消息。由于可以在计算机上尝试,因此我可以确保程序是正确的。
我在Google Cloud Platform上有一个VM实例,我可以通过ssh(由Google Cloud提供的一种简单方法)进行操作。我可以确保服务器正常运行。
我在Google云服务器上启动了一个简单的tcp服务器python程序。然后,我在计算机上启动客户端程序。但是我得到这个错误:
ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了连接
或等效的中文:
ConnectionRefusedError:[WinError 10061]由于目标计算机积极拒绝,无法连接。
我该如何解决此问题并连接到我的Google云服务器?
我想也许防火墙拒绝了我的计算机的连接,但不知道如何解决。
答案 0 :(得分:1)
此错误表示您的程序未在0.0.0.0
端口XYZ
上监听。
检查以查看您的程序是否正在监听localhost
。如果更改为0.0.0.0
,则表示所有可用网络。 localhost
表示不监听任何网络接口,仅接受来自计算机内部的连接。
然后再次检查端口号。
要查看是否有监听的内容,请运行以下命令(Linux):netstat -at
在端口XYZ
上寻找一行。
启动程序时,请确保在创建侦听器时它不会出错。如果尝试使用低于1024的端口号,则需要使用root特权对程序进行卸载。
答案 1 :(得分:1)
TCP连接被拒绝,因为GCP防火墙确实阻止了它。因此,您必须创建一个防火墙规则,以打开用于Ingress连接的TCP端口。
通过在GCP控制台的VPC网络部分中导航至Firewall rules,您可以创建防火墙规则或更新现有规则。
一种方法是tag您的GCE实例,并在创建防火墙规则时,将目标设置为此标签,对于“源过滤器”,将您尝试建立的机器的IP连接,或仅允许所有IP以0.0.0.0/0作为源进行连接。记住要指定需要打开的TCP端口。