https://github.com/andrey-ushakov/ping_discover_network
The library allows to ping network devices in an IP subnet and therefore dicover them. Could be used to find printers and other services.
https://github.com/andrey-ushakov/ping_discover_network
dart discover flutter network ping printer
Last synced: 2 months ago
JSON representation
The library allows to ping network devices in an IP subnet and therefore dicover them. Could be used to find printers and other services.
- Host: GitHub
- URL: https://github.com/andrey-ushakov/ping_discover_network
- Owner: andrey-ushakov
- License: bsd-3-clause
- Created: 2019-06-13T17:10:53.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-12T05:40:50.000Z (over 1 year ago)
- Last Synced: 2025-03-27T23:11:12.384Z (3 months ago)
- Topics: dart, discover, flutter, network, ping, printer
- Language: Dart
- Homepage:
- Size: 81.1 KB
- Stars: 50
- Watchers: 4
- Forks: 47
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# ping_discover_network

[Dart](https://dart.dev)/[Flutter](https://flutter.dev) 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](https://pub.dev/packages/wifi) allows to get the local IP address / network subnet.
The library tested on both, Android and iOS platforms.
[[pub.dev page]](https://pub.dev/packages/ping_discover_network) | [[Documentation]](https://pub.dev/documentation/ping_discover_network/latest/)
## Getting Started
*Check complete examples in /example folder.*
Discover available network devices in a given subnet on a given port:
```dart
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:
```dart
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:
```dart
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);
```