Flutter真机测试报SocketException: Connection timed out errno=110 模拟器正常
报错原因
10.0.2.2是Android模拟器专属的特殊IP地址,作用是映射运行模拟器的宿主电脑的本地回环地址(127.0.0.1),仅在模拟器网络环境下生效。
真机作为独立的外部设备,无法识别该IP地址的路由指向,自然无法连接到你部署在电脑本地的后端服务,就会触发连接超时的报错。
解决方法
- 确保测试真机和开发电脑连接至同一个局域网,二者不能处于不同网段或者一个用移动流量一个用WiFi
- 查询开发电脑的局域网IP:Windows系统在终端执行
ipconfig,Mac/Linux系统执行ifconfig或ip addr,找到格式为192.168.x.x的局域网IP地址 - 将Flutter项目中所有接口请求的基地址,从
10.0.2.2替换为上一步查到的电脑局域网IP,例如将http://10.0.2.2:3000修改为http://192.168.3.24:3000 - 确认电脑上运行的后端服务监听地址为
0.0.0.0,而非仅绑定127.0.0.1,如果仅绑定本地回环地址,局域网内的其他设备依然无法访问该服务 - 临时关闭开发电脑的系统防火墙,或者为后端服务的端口添加入站访问规则,避免防火墙拦截真机的请求
- 若使用iOS真机测试,还需要在项目的
Info.plist文件中添加明文请求允许配置,否则iOS默认会拦截非HTTPS的请求:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
内容的提问来源于stack exchange,提问作者Anoop Janakar
相关产品推荐
相关产品推荐

