我在 Linux 上用 Python 制作了一个服务器-客户端模型。当我在 Windows 上的 Ubuntu 子系统上运行服务器时,它运行良好。但是当我运行客户端(尝试连接到服务器)时,我收到此错误:
Traceback (most recent call last):
File "client.py", line 64, in <module>
s.connect('127.0.0.1',port)
File "client.py", line 19, in connect
self.sock.connect((host, port))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
服务器正在监听 localhost 和 port = 14345,客户端正在尝试连接该服务器。我也试过了,telnet 127.0.0.1 14345
但还是报同样的错误:
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
我也在netstat -an
Windows 上的 cmd 中尝试过,它显示了这个
TCP 127.0.1.1:14345 0.0.0.0:0 LISTENING
这意味着服务器确实在监听,但 Linux 子系统的客户端无法连接到它。
此外,该代码在真正的 Linux(我的意思是安装在硬盘上的 Ubuntu)上运行良好。
答案1
如果您在 Windows 中使用第三方防病毒/防火墙,请尝试暂时停用它们,看看连接是否恢复正常。作为安全措施,您可以暂时使用内置的 Windows 防病毒/防火墙程序。如果您在 WSL 中使用 Ubuntu,您可以安装 gufw 应用程序来管理您的 Linux 防火墙。
第三方防火墙与 Windows Subsystem for Linux 不兼容是一个已知问题。请参阅第三方 AV/防火墙无法上网和apt-get 更新和安装失败了解详情。