WSL中C++ TCP客户端连接Python TCP服务器被拒求助
WSL下C++ TCP客户端连接Windows Python服务器报Connection refused的解决办法
问题概述
Windows主机运行的Python TCP服务器绑定127.0.0.1:9999,Windows本地Python客户端可正常连接,但WSL环境中编译运行的C++客户端始终返回Connection refused错误。
核心原因
WSL与Windows主机属于独立的网络命名空间,两者的127.0.0.1是各自的本地回环地址,互不互通。Python服务器绑定127.0.0.1仅监听Windows主机的回环接口,WSL客户端访问127.0.0.1只会尝试连接WSL自身的回环,无法触及Windows上的服务器。
解决方案
方案1:修改Python服务器监听所有接口
将服务器代码中的HOST从127.0.0.1改为0.0.0.0,让服务器监听主机所有可用网络接口,包括WSL可访问的接口:
import socket HOST = "0.0.0.0" # 监听所有网络接口 PORT = 9999 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) print("Listening...") s.listen(1) conn, addr = s.accept() print("Accepted connection!")
方案2:C++客户端连接Windows主机的局域网IP
若不想修改服务器配置,可让C++客户端直接连接Windows主机的局域网IP:
- 在Windows主机执行
ipconfig,找到当前网络适配器的IPv4地址(通常为192.168.x.x格式)。 - 修改C++客户端中的目标地址:
std::string address = "192.168.x.x"; // 替换为Windows主机的实际局域网IP
额外验证项
- 检查Windows防火墙是否阻止了9999端口的入站连接,必要时添加允许Python程序通过防火墙的规则。
- 确认C++客户端实例化时传入的
port_number确实为9999,避免端口不匹配。
内容的提问来源于stack exchange,提问作者irish Senthil
相关产品推荐
相关产品推荐

