使用Python Socket连接两台计算机报错ConnectionRefusedError如何解决?
跨主机Socket通信问题修复
根因说明
- 原有服务端绑定
localhost(回环地址127.0.0.1),仅允许同一设备上的进程发起连接,无法接收其他主机的访问请求 - 原有客户端固定连接
localhost,跨主机部署时会错误访问客户端本地的9999端口,而非服务端主机的对应端口
修复后代码
服务端代码
import socket s = socket.socket() # 绑定所有可用网络接口,允许任意主机发起连接 ip = '0.0.0.0' port = 9999 s.bind((ip, port)) s.listen() print("wait for client...") c, addr = s.accept() print(f"client added: {addr}") while True: msg = input("your message:>>>") c.send(msg.encode()) print(c.recv(1000000).decode())
客户端代码
import socket s = socket.socket() # 此处替换为服务端所在主机的实际IP地址,例如局域网IP 192.168.3.20 ip = '替换为服务端实际IP' port = 9999 s.connect((ip, port)) print("connected") while True: print(s.recv(1000000).decode()) msg = input("your message:>>>") s.send(msg.encode())
必要验证步骤
- 确认服务端与客户端网络连通:在客户端设备执行
ping 服务端IP,确认无丢包 - 确认服务端设备防火墙已开放9999端口的入站规则,测试时可临时关闭防火墙验证
- 若服务端部署在公网环境,需配置路由器端口映射,将9999端口映射到服务端所在内网设备的对应端口
内容的提问来源于stack exchange,提问作者Roham niazi
相关产品推荐
相关产品推荐

