Flutter(v3.0.5) iOS模拟器调试遇SocketException连接失败求解决
iOS模拟器无法连接API的问题排查与修复
问题背景
在macOS 12.5系统上调试Flutter(v3.0.5)应用时,Android Studio控制台抛出以下Dio连接错误,确认api.example.top服务正常,但iOS模拟器无法连接该API:
flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196mDioError [DioErrorType.other]: SocketException: Connection failed (OS Error: Can't assign requested address, errno = 49), address = api.example.top, port = 443<…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m#0 DioMixin.assureDioError (package:dio/src/dio_mixin.dart:819:20)<…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m#1 DioMixin._dispatchRequest (package:dio/src/dio_mixin.dart:678:13)<…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m<asynchronous suspension><…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m#2 DioMixin.fetch.<anonymous closure>.<anonymous closure> (package:dio/src/dio_mixin.dart:586:9)<…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m<asynchronous suspension><…> flutter: ^[[38;5;196m│ ^[[0m^[[39m^[[48;5;196m<…>
相关环境信息
Android Studio版本
Android Studio Chipmunk | 2021.2.1 Patch 2 Build #AI-212.5712.43.2112.8815526, built on July 10, 2022 Runtime version: 11.0.12+0-b1504.28-7817840 aarch64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 12.5.1 GC: G1 Young Generation, G1 Old Generation Memory: 2280M Cores: 10 Registry: external.system.auto.import.disabled=true Non-Bundled Plugins: Dart (212.5744), com.thoughtworks.gauge (212.4746.52), org.moe.community (1.4.10), org.jetbrains.kotlin (212-1.7.10-release-333-AS5457.46), io.flutter (69.0.2)
netstat -a部分输出
tcp4 0 0 xiaoqiangs-mbp.51377 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.50273 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.62423 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.56977 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.56547 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.56367 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.55088 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.52435 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.64959 ec2-54-78-39-141.https ESTABLISHED tcp4 0 0 xiaoqiangs-mbp.62059 ec2-54-78-39-141.https ESTABLISHED
原因分析
错误中的errno=49对应iOS模拟器的网络配置异常,常见触发原因包括:
- DNS解析失败:模拟器无法正确解析
api.example.top域名,导致无法定位目标服务器 - 模拟器网络栈异常:模拟器内部网络组件故障,无法绑定本地端口发起请求
- 主机代理冲突:macOS的代理设置干扰了模拟器的网络路由,导致请求被拦截或无法正常转发
修复方案
1. 重置iOS模拟器网络状态
- 打开iOS模拟器,点击菜单栏 Hardware > Erase All Content and Settings,重置模拟器至初始状态
- 重启模拟器后重新运行Flutter应用,尝试连接API
2. 手动配置公共DNS
- 在模拟器中进入 设置 > Wi-Fi,点击当前连接网络右侧的"i"图标
- 将DNS服务器改为
8.8.8.8或1.1.1.1,保存设置后重试请求
3. 关闭系统代理
- 打开macOS 系统偏好设置 > 网络 > 高级 > 代理,取消所有勾选的代理选项
- 重启Android Studio和模拟器,重新运行应用
4. 刷新模拟器网络栈
- 在终端执行命令关闭所有模拟器:
xcrun simctl shutdown all - 执行命令清除模拟器数据:
xcrun simctl erase all(注意备份需要的数据) - 重新启动模拟器并运行应用
5. 检查Flutter项目配置
- 确认项目中请求的
api.example.top:443地址无拼写错误 - 更新Dio依赖至最新稳定版:执行
flutter pub upgrade dio,修复依赖包已知的网络问题
内容的提问来源于stack exchange,提问作者spark
相关产品推荐
相关产品推荐

