Python跨机器客户端连接服务器遇TimeoutError问题求助
解决跨机器Socket连接超时(TimeoutError: 10060)问题
核心排查与修复步骤
1. 修正服务器绑定地址
你的服务器代码中SERVER = socket.gethostbyname(socket.gethostname())可能仅绑定到当前机器的特定网卡(比如回环地址127.0.0.1),导致其他机器无法接入。
将服务器绑定地址改为0.0.0.0,让服务器监听所有可用网卡的连接请求:
# 替换原SERVER赋值行 SERVER = "0.0.0.0"
重启服务器后,控制台会显示[LISTENING] Server is listening on 0.0.0.0,此时服务器可接收来自任意网卡的连接。
2. 确认客户端使用的服务器IP正确
如果客户端和服务器处于同一局域网(同WiFi),客户端必须填写服务器的内网IP,而非外网IP或回环地址:
- Windows:打开命令提示符,执行
ipconfig,找到无线网卡对应的IPv4地址 - Linux/macOS:执行
ip addr或ifconfig,找到WiFi网卡的inet地址
3. 彻底检查防火墙规则
即使你检查过防火墙,也要确保两个关键设置:
- 允许Python程序通过防火墙的入站、出站规则
- 手动添加TCP 5050端口的入站规则:
- Windows:控制面板→Windows Defender防火墙→高级设置→入站规则→新建规则→选择「端口」→TCP→填写5050→允许连接
- Linux:执行
sudo ufw allow 5050/tcp(若使用ufw防火墙)
4. 关闭路由器AP隔离
部分家用路由器默认开启AP隔离(客户端隔离),会阻止同WiFi下设备互相通信。进入路由器管理后台(通常为192.168.1.1或192.168.0.1),在无线设置中关闭该功能。
5. 测试网络连通性
在客户端机器上执行以下命令,定位网络层面问题:
- 测试服务器IP可达性:
ping 服务器内网IP - 测试5050端口是否开放:
telnet 服务器内网IP 5050(Windows需先在「启用或关闭Windows功能」中开启telnet)- telnet连接失败:说明端口未开放或服务器未正确监听;连接成功:则网络无问题,需排查程序逻辑。
内容的提问来源于stack exchange,提问作者koder
相关产品推荐
相关产品推荐

