testDns method
依次/并发测试多台 DNS 服务器 / Tests multiple DNS servers.
concurrent 为 true(默认)时并发查询;为 false 时按顺序查询,可用于
规避部分网络对并发 UDP 的限制 / concurrent queries in parallel by
default; set it to false to serialise them.
includeSystemResolver 为 true 时额外加入一条系统解析器结果 /
includeSystemResolver also appends a platform-resolver result.
Implementation
Future<List<DnsTestResult>> testDns({
String domain = 'www.google.com',
List<String> dnsServers = const <String>[
'1.1.1.1',
'8.8.8.8',
'114.114.114.114',
],
Duration? timeout,
bool concurrent = true,
bool includeSystemResolver = false,
}) async {
final servers = <String>[
if (includeSystemResolver) 'system',
...dnsServers,
];
if (servers.isEmpty) return const <DnsTestResult>[];
if (concurrent) {
return Future.wait(
servers.map(
(server) => query(domain: domain, server: server, timeout: timeout),
),
);
}
final results = <DnsTestResult>[];
for (final server in servers) {
results.add(
await query(domain: domain, server: server, timeout: timeout),
);
}
return results;
}