Flutter报SocketException: No route to host异常,Quarkus后端连接求助
SocketException: No route to host 问题排查方案
报错信息
E/flutter (18597): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: SocketException: No route to host E/flutter (18597): #0 UserService.existsByPhone (package:bridge/services/user/user_service.dart:79:7) E/flutter (18597): <asynchronous suspension> E/flutter (18597): #1 _AuthStore.existsByPhone (package:bridge/store/auth/auth_store.dart:65:24) E/flutter (18597): <asynchronous suspension> E/flutter (18597): #2 AsyncAction.run (package:mobx/src/api/async/async_action.dart:28:14) E/flutter (18597): <asynchronous suspension> E/flutter (18597): #3 _PhoneNumberCheckState._checkPhone (package:bridge/widgets/auth/phone_number_check.dart:199:31) E/flutter (18597): <asynchronous suspension> E/flutter (18597): #4 _PhoneNumberCheckState.build.<anonymous closure> (package:bridge/widgets/auth/phone_number_check.dart:148:23) E/flutter (18597): <asynchronous suspension>
问题背景
- Flutter应用在真机通过WiFi运行,后端Quarkus(Java)服务部署在网线连接的PC上,PC局域网IP为
192.168.1.4 - 已添加Android Manifest网络相关配置,但仍出现无法连接主机的Socket异常
排查解决步骤
1. 验证设备网络互通性
- 在Android真机上用终端工具执行
ping 192.168.1.4,确认能收到响应 - 同时在PC上ping真机的局域网IP,确保双向网络连通
- 如果ping不通,说明PC和真机不在同一局域网,或PC防火墙拦截了请求
2. 修改Quarkus服务绑定地址
- Quarkus默认仅绑定
localhost,导致局域网设备无法访问 - 打开Quarkus的
application.properties配置文件,添加:quarkus.http.host=0.0.0.0 - 重启Quarkus服务,确认服务监听所有网卡(而非仅本地回环地址)
3. 检查PC防火墙规则
- 临时关闭PC防火墙(Windows Defender/Linux/macOS防火墙)测试连接
- 如果关闭后能正常访问,需为Quarkus服务的端口(默认8080)添加局域网访问放行规则
4. 修正Flutter请求地址
- 检查
UserService.existsByPhone方法(第79行)中的请求URL,确保使用http://192.168.1.4:端口号,而非localhost或127.0.0.1(真机的localhost指向自身,无法访问PC服务)
5. 确认Android Manifest配置
- 确保已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 若请求为HTTP协议(非HTTPS),需在
<application>标签内添加:android:usesCleartextTraffic="true"
内容的提问来源于stack exchange,提问作者Ueder Cardoso
相关产品推荐
相关产品推荐

