Python Socket局域网通信报错:安卓客户端无法连接PC服务器
解决安卓端局域网Socket连接报错Errno 113(No route to host)的问题
针对你遇到的PC端Socket服务器能被本地客户端连接,但安卓端提示OSError : [Errno 113] No route to host的问题,按以下步骤排查解决:
1. 确认网络基础连通性
- 在安卓设备上通过终端类APP执行ping命令,测试与PC IP(192.168.1.7)的连通性:
如果ping不通,说明安卓和PC存在网络隔离:ping 192.168.1.7- 检查两者是否连接同一WiFi热点;
- 排查路由器是否开启“AP隔离”功能(部分路由器默认开启,会阻止局域网内设备互访)。
2. 彻底排查PC防火墙/安全软件
即使开放了1700端口,仍可能存在拦截:
- 系统防火墙:
- 确认TCP 1700端口的入站规则允许所有局域网设备访问(而非仅本地或特定IP);
- 临时关闭系统防火墙,测试安卓能否连接,若成功则重新配置规则。
- 第三方安全软件:
- 暂时关闭360、腾讯电脑管家等软件的防火墙功能,测试连接;
- 若成功,在安全软件中添加允许1700端口TCP入站的规则。
3. 确认PC局域网IP正确性
PC的局域网IP可能因路由器DHCP重新分配而变化:
- 在PC上执行命令查看当前IP:
- Windows:
ipconfig,找到WiFi/以太网适配器的IPv4地址; - Linux/macOS:
ip addr或ifconfig;
- Windows:
- 确保安卓客户端代码中填写的IP与PC当前IP一致。
4. 检查安卓应用的网络权限
安卓应用需要明确权限才能访问局域网:
- 在
AndroidManifest.xml中添加权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 安卓10及以上版本,进入应用设置,确认“网络权限”已开启。
5. 验证服务器端口监听状态
确认Python服务器确实在监听1700端口:
- 在PC上执行命令查看端口占用:
- Windows:
netstat -ano | findstr 1700; - Linux/macOS:
lsof -i :1700;
- Windows:
- 确保输出中显示你的Python进程正在监听该端口。
可选:优化客户端代码排查
给安卓端Python代码添加异常捕获,方便定位细节问题:
import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(10) # 设置超时,避免无限等待 s.connect(('192.168.1.7', 1700)) print("连接成功") except socket.timeout: print("连接超时,请检查网络或服务器状态") except Exception as e: print(f"连接失败: {str(e)}") finally: s.close()
内容的提问来源于stack exchange,提问作者MDKouhbanani
相关产品推荐
相关产品推荐

