Flutter应用仅禁用杀毒软件可运行 报SocketException 10013错误
故障场景
Windows环境下进入桌面Flutter项目路径执行flutter run,选择Edge作为Web调试设备时触发web开发服务器绑定失败问题,手动指定端口、修改主机名均无法解决,仅禁用杀毒软件时可正常启动应用。
核心报错日志如下:
admin@DS1 MINGW64 ~/Desktop/app $ flutter run Multiple devices found: Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.22000.739] Chrome (web) • chrome • web-javascript • Google Chrome 102.0.5005.115 Edge (web) • edge • web-javascript • Microsoft Edge 102.0.1245.44 [1]: Windows (windows) [2]: Chrome (chrome) [3]: Edge (edge) Please choose one (To quit, press "q/Q"): 3 Launching lib\main.dart on Edge in debug mode... Failed to bind web development server: SocketException: Failed to create server socket (OS Error: An attempt was made to access a socket in a way forbidden by its access permissions. , errno = 10013), address = localhost, port = 0 #0 _NativeSocket.bind (dart:io-patch/socket_patch.dart:996:7) <asynchronous suspension> #1 WebAssetServer.start (package:flutter_tools/src/isolated/devfs_web.dart:205:22) <asynchronous suspension> #2 WebDevFS.create (package:flutter_tools/src/isolated/devfs_web.dart:732:22) <asynchronous suspension> #3 ResidentWebRunner.run.<anonymous closure> (package:flutter_tools/src/isolated/resident_web_runner.dart:285:25) <asynchronous suspension> #4 asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:111:24) <asynchronous suspension> Failed to bind web development server: SocketException: Failed to create server socket (OS Error: An attempt was made to access a socket in a way forbidden by its access permissions. , errno = 10013), address = localhost, port = 0
故障根因
报错errno = 10013是Windows系统的权限类套接字拦截错误,并非端口被占用,触发原因是杀毒软件的网络防护、端口防护规则默认拦截了Dart/Flutter进程在localhost回环地址上的动态端口绑定行为,部分场景下是安全软件改写了Winsock系统配置,导致即使临时退出安全软件,拦截规则仍会生效。
无需关闭杀毒软件的解决步骤
- 给Flutter相关进程添加安全软件白名单:需要加白的路径包含三类:一是Flutter SDK目录下
bin文件夹内的所有可执行文件,重点放行dart.exe、flutter.exe;二是本地安装的Edge浏览器主程序msedge.exe;三是当前Flutter项目下的.dart_tool缓存目录。加白时需同时允许上述进程在127.0.0.1本地回环地址上的TCP端口绑定、访问权限,不要限制其本地网络行为。 - 重置Winsock系统配置:以管理员身份打开命令提示符,执行命令
netsh winsock reset,执行完成后重启电脑,清除安全软件写入的套接字拦截规则,修复系统网络层权限配置。 - 固定调试端口避开拦截范围:启动Web调试时不要使用默认的随机端口(port=0代表系统随机分配端口,极易触发安全软件的动态端口拦截规则),显式指定固定端口启动,命令示例:
flutter run -d edge --web-port=8080 --web-hostname=127.0.0.1。指定端口前先以管理员身份打开PowerShell执行netsh interface ipv4 show excludedportrange protocol=tcp,查看当前系统被Hyper-V、安全软件预留的端口段,选择不在排除范围内、1024以上的端口作为固定调试端口。 - 添加本地端口放行规则:在杀毒软件的防火墙配置中,新增一条本地回环规则,允许
127.0.0.1地址上你指定的调试端口的所有入站、出站连接,避免端口级防护规则拦截绑定请求。
注意:本地调试不要将
--web-hostname参数设置为0.0.0.0,该配置会让调试服务监听所有网卡地址,会触发绝大多数安全软件的公网服务暴露风险拦截规则。
内容的提问来源于stack exchange,提问作者Rajpal Singh
相关产品推荐
相关产品推荐

