From 744e768d3a758cc9a583f2abd71cba425f95469b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E9=94=8B?= <2535831261@qq.com> Date: Fri, 17 Jul 2026 17:48:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=20UtilSearchNasIp=20=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A2=E6=B5=8B=E5=BC=80=E5=A7=8B=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=AE=B0=E5=BD=95=E5=92=8C=E6=80=BB=E8=80=97=E6=97=B6?= =?UTF-8?q?=E6=89=93=E5=8D=B0=EF=BC=8C=E5=A2=9E=E5=BC=BA=E4=BA=86=E5=91=BD?= =?UTF-8?q?=E4=B8=AD=E8=AE=B0=E5=BD=95=E7=9A=84=E8=B0=83=E8=AF=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=EF=BC=9B=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BB=A5=E4=BC=A0=E9=80=92=E5=BC=80=E5=A7=8B=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=8F=82=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/utils/util_search_nasIp.dart | 31 +++++++++++++++++++-------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/core/utils/util_search_nasIp.dart b/lib/core/utils/util_search_nasIp.dart index adf2e2b..14770d1 100644 --- a/lib/core/utils/util_search_nasIp.dart +++ b/lib/core/utils/util_search_nasIp.dart @@ -20,6 +20,7 @@ class UtilSearchNasIp { return nasIp; } + final startedAt = DateTime.now(); final preUrl = await _resolvePreUrl(); final dio = Dio( BaseOptions( @@ -39,8 +40,13 @@ class UtilSearchNasIp { cancelToken: cancelToken, preUrl: preUrl, host: host, + startedAt: startedAt, ), ]); + if (nasIp == null) { + final elapsedMs = DateTime.now().difference(startedAt).inMilliseconds; + debugPrint('NAS 探测未命中,总耗时: ${elapsedMs}ms'); + } return nasIp; } finally { dio.close(force: true); @@ -66,30 +72,37 @@ class UtilSearchNasIp { required CancelToken cancelToken, required String preUrl, required int host, + required DateTime startedAt, }) async { if (cancelToken.isCancelled || nasIp != null) return; final target = '$preUrl$host$_probePath'; try { await dio.get(target, cancelToken: cancelToken); - _onHit(preUrl, host, cancelToken); + _onHit(preUrl, host, cancelToken, startedAt); } on DioException catch (error) { if (error.type == DioExceptionType.cancel) return; // 带 response 的 DioException 也表示已连通 if (error.response != null) { - _onHit(preUrl, host, cancelToken); + _onHit(preUrl, host, cancelToken, startedAt); } } catch (_) { // 超时 / 连接失败:未命中 } } - /// 记录命中:写 [nasIp]、打印并取消其余请求。 - static void _onHit(String preUrl, int host, CancelToken cancelToken) { + /// 记录命中:写 [nasIp]、打印 IP 与总耗时,并取消其余请求。 + static void _onHit( + String preUrl, + int host, + CancelToken cancelToken, + DateTime startedAt, + ) { if (nasIp != null) return; final ip = '${_hostPrefix(preUrl)}$host'; nasIp = ip; - debugPrint('NAS IP: $ip'); + final elapsedMs = DateTime.now().difference(startedAt).inMilliseconds; + debugPrint('NAS IP: $ip,探测总耗时: ${elapsedMs}ms'); if (!cancelToken.isCancelled) { cancelToken.cancel('nas-found'); } @@ -108,15 +121,15 @@ class UtilSearchNasIp { // 1) Auth 页静默探测(不阻塞登录): // // import 'dart:async'; -// import 'package:recording_tool/core/utils/util_getNasIp.dart'; +// import 'package:recording_tool/core/utils/util_search_nasIp.dart'; // // WidgetsBinding.instance.addPostFrameCallback((_) { -// unawaited(UtilGetNasIp.discover()); +// unawaited(UtilSearchNasIp.discover()); // }); // // 2) 业务侧读取已命中 IP: // -// final ip = UtilGetNasIp.nasIp; +// final ip = UtilSearchNasIp.nasIp; // if (ip != null) { // final base = 'http://$ip:5666'; // // 使用 base 访问 NAS... @@ -124,6 +137,6 @@ class UtilSearchNasIp { // // 3) 主动等待探测结果(少用,会阻塞当前异步流程): // -// final ip = await UtilGetNasIp.discover(); +// final ip = await UtilSearchNasIp.discover(); // debugPrint('result: $ip'); //