Ports / 端口检测
checkPort() returns a full PortCheckResult for one port; isPortOpen() is the
plain boolean convenience; scanPorts() runs many ports concurrently with
bounded in-flight connections.
checkPort() 返回单个端口的完整 PortCheckResult;isPortOpen() 是便捷的布尔版;
scanPorts() 以有界并发批量扫描多个端口。
Single port / 单端口
// Boolean convenience / 便捷布尔版
final open = await NetworkDiagnostic.isPortOpen(
host: 'example.com',
port: 443,
timeout: const Duration(seconds: 3),
);
print(open ? 'HTTPS reachable' : 'HTTPS unreachable');
// Full result with RTT and error message / 含 RTT 与错误信息的完整结果
final result = await NetworkDiagnostic.checkPort(host: 'example.com', port: 443);
print('open=${result.isOpen} rtt=${result.responseTimeMs} ms '
'err=${result.errorMessage}');Bulk scan / 批量扫描
final scan = await NetworkDiagnostic.scanPorts(
host: 'example.com',
ports: const <int>[22, 80, 443, 8080, 8443],
concurrency: 8,
);
for (final r in scan) {
print('${r.host}:${r.port} '
'${r.isOpen ? "open" : "closed"} '
'${r.responseTimeMs.toStringAsFixed(1)} ms '
'${r.errorMessage ?? ""}');
}| Parameter | Default | Meaning |
|---|---|---|
ports (scanPorts) | config.probePorts ([80, 443]) | Ports to probe |
concurrency | 12 | Max in-flight connections |
timeout | config.portCheckTimeout | Timeout per port |
checkPort()returns aPortCheckResult(withisOpen,responseTimeMsanderrorMessage); useisPortOpen()for a plain boolean. When you need the round-trip time or the failure reason for a single port, callcheckPort()directly or pass a one-element list toscanPorts():scanPorts(host: 'example.com', ports: [443]).first.checkPort()返回PortCheckResult(含isOpen、responseTimeMs、errorMessage);单端口布尔诉求请用isPortOpen()。需要 RTT 或失败原因时可直接 调用checkPort(),或给scanPorts(..., ports: [443])取单条结果。