安卓真机运行时应用无法连接本地服务端获取数据是什么原因?
安卓真机连接本地局域网服务端超时问题解决
问题现象
应用启动时向部署在本地电脑的服务端发送请求获取帖子列表,无正常返回内容。调试时在响应接收位置捕获到SocketTimeoutException异常,新增帖子提交POST请求时触发应用崩溃,异常栈核心信息如下:
java.net.SocketTimeoutException: failed to connect to /192.168.1.35 (port 9999) from /192.168.1.33 (port 49918) after 30000ms
已预先确认IP、端口配置无误:
- Android Studio原生模拟器访问
10.0.2.2:9999可正常获取数据 - 自带独立IP的Genymotion模拟器访问
192.168.1.35:9999可正常收到响应 - 仅Xiaomi Redmi 5、Nexus 5X两款真机无法完成连接
通用排查步骤
同类问题可按以下优先级逐一验证:
- 确认真机与电脑处于同一WiFi局域网下,两端均未开启VPN、网络代理、流量分流类工具
- 确认服务端启动时绑定的是
0.0.0.0地址,而非仅绑定127.0.0.1本地回环地址,否则仅本机可访问服务 - 检查电脑防火墙是否拦截了服务对应端口的入站请求
- 确认App已申请
INTERNET网络权限,安卓9及以上系统未禁止明文HTTP请求(如果服务端用的是HTTP而非HTTPS)
本次问题解决方案
问题根源为本地电脑开启了系统防火墙,拦截了真机向9999端口发起的连接请求,临时关闭防火墙或者在防火墙入站规则中添加9999端口的允许规则即可解决。
内容的提问来源于stack exchange,提问作者Kurtca Bain
相关产品推荐
相关产品推荐

