wwandreww/ping_discover_network
このライブラリは、IPサブネット内のネットワークデバイスにピングを送信し、それらを検出できるようにします。プリンターやその他のサービスの検索に使用できます。
- 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);