Python Socket连接报错[WinError 10061]:目标计算机拒绝连接请求
跨计算机Socket通信连接拒绝问题排查与修复
核心问题定位
服务器绑定的127.234.231.124属于回环地址段(127.0.0.0/8),这类地址仅允许本机内部访问,跨计算机发起的连接请求会直接被拒绝,这是导致ConnectionRefusedError的首要原因。
排查与修复步骤
1. 修正服务器绑定地址
将服务器的绑定地址改为0.0.0.0(监听所有可用网卡),或者服务器所在计算机的对外可访问IP(如局域网IP 192.168.x.x):
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定所有网卡的55894端口,允许外部设备连接 sock.bind(('0.0.0.0', 55894)) sock.listen() print('Listening for connections on port 55894...') while True: conn, addr = sock.accept() print(f'Connected from {addr}') data = conn.recv(1024) if data: # 打印客户端发送的消息,满足需求 print(f'Received message: {data.decode("UTF-8")}') conn.send(data.upper()) conn.close()
2. 调整客户端连接地址
客户端需连接服务器的实际对外IP(而非回环地址),先通过服务器端的ipconfig(Windows)或ifconfig(Linux/macOS)获取正确IP,修改客户端代码:
import socket # 替换为服务器的实际局域网/公网IP SERVER_IP = '192.168.1.100' SERVER_PORT = 55894 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((SERVER_IP, SERVER_PORT)) sock.send(bytes('Hello, world', encoding='UTF-8')) data = sock.recv(1024) sock.close() print(data.decode("UTF-8"))
3. 检查网络连通性
- 在客户端执行
ping [服务器IP],确认两台计算机网络可达; - 执行
telnet [服务器IP] 55894,验证端口是否开放,若连接失败需排查端口占用或防火墙设置。
4. 配置防火墙放行
- 服务器端:允许Python程序通过防火墙,或手动开放55894端口的入站连接;
- 客户端:确保防火墙允许向服务器IP和端口发起出站连接。
5. 验证服务器监听状态
在服务器端执行:
- Windows:
netstat -ano | findstr 55894,查看端口是否被Python进程占用; - Linux/macOS:
netstat -tulpn | grep 55894,确认服务正在监听指定端口。
内容的提问来源于stack exchange,提问作者Тимофей Рачков
相关产品推荐
相关产品推荐

