wwandreww/ping_discover_network
該程式庫可讓您對IP子網中的網路裝置進行ping操作,進而發現它們。可用於尋找印表機及其他服務。
- Stars
- 52
- Forks
- 51
- 最近推送(UTC)
- 2023年12月12日
- 專案狀態
- 未封存
語言DartRubyObjective-CJava
技術主題
使用的依賴
依賴清單 2 項
- flutter
{"sdk":"flutter"} - flutter_test開發依賴
{"sdk":"flutter"}
原始 README
以下為英文專案原文快照,最新內容請造訪 GitHub。
展開 / 收合專案 README
ping_discover_network
Pub
Dart/Flutter library that allows to ping IP subnet and discover network devices.
Could be used to find printers (for example, on port 9100) and any other devices and services in local network.
The device should be connected to a Wi-Fi network. wifi package allows to get the local IP address / network subnet.
The library tested on both, Android and iOS platforms.
[pub.dev page] | [Documentation]
Getting Started
Check complete examples in /example folder.
Discover available network devices in a given subnet on a given port:
import 'package:ping_discover_network/ping_discover_network.dart';
// NetworkAnalyzer.discover pings PORT:IP one by one according to timeout.
// NetworkAnalyzer.discover2 pings all PORT:IP addresses at once.
const port = 80;
final stream = NetworkAnalyzer.discover2(
'192.168.0', port,
timeout: Duration(milliseconds: 5000),
);
int found = 0;
stream.listen((NetworkAddress addr) {
if (addr.exists) {
found++;
print('Found device: ${addr.ip}:$port');
}
}).onDone(() => print('Finish. Found $found device(s)'));
Get local ip and discover network devices:
import 'package:wifi/wifi.dart';
import 'package:ping_discover_network/ping_discover_network.dart';
final String ip = await Wifi.ip;
final String subnet = ip.substring(0, ip.lastIndexOf('.'));
final int port = 80;
final stream = NetworkAnalyzer.discover2(subnet, port);
stream.listen((NetworkAddress addr) {
if (addr.exists) {
print('Found device: ${addr.ip}');
}
});
Discover available network devices in a given subnet on a given port range:
import 'package:ping_discover_network/ping_discover_network.dart';
void checkPortRange(String subnet, int fromPort, int toPort) {
if (fromPort > toPort) {
return;
}
print('port ${fromPort}');
final stream = NetworkAnalyzer.discover2(subnet, fromPort);
stream.listen((NetworkAddress addr) {
if (addr.exists) {
print('Found device: ${addr.ip}:${fromPort}');
}
}).onDone(() {
checkPortRange(subnet, fromPort + 1, toPort);
});
}
checkPortRange('192.168.0', 400, 410);