Network Tools Supported
-
Host Scanner
- Search all devices on subnet
- Get mac address of devices on Linux, macOS and Windows.
- Search devices for a specific port open.
-
Port Scanner
- Single Port scan
- Range
- Custom
Partly Work:
- Mdns Scanner
Please check network_tools_flutter package for extensive support to features on different platforms.
import 'package:network_tools/network_tools.dart';
Future<void> main() async {
await configureNetworkTools('build', enableDebugging: true);
runApp(const MyApp());
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// It's necessary to pass correct path to be able to use this library.
final appDocDirectory = await getApplicationDocumentsDirectory();
await configureNetworkTools(appDocDirectory.path, enableDebugging: true);
runApp(const MyApp());
}
String address = '192.168.1.12';
// or You can also get address using network_info_plus package
// final String? address = await (NetworkInfo().getWifiIP());
final String subnet = address.substring(0, address.lastIndexOf('.'));
final stream = HostScannerService.instance.getAllPingableDevices(subnet, firstHostId: 1, lastHostId: 50,
progressCallback: (progress) {
print('Progress for host discovery : $progress');
});
stream.listen((host) {
//Same host can be emitted multiple times
//Use Set<ActiveHost> instead of List<ActiveHost>
print('Found device: $host');
}, onDone: () {
print('Scan completed');
}); // Don't forget to cancel the stream when not in use.
//1. Range
String target = '192.168.1.1';
PortScannerService.instance.scanPortsForSingleDevice(target, startPort: 1, endPort: 1024,
progressCallback: (progress) {
print('Progress for port discovery : $progress');
}).listen((ActiveHost event) {
if (event.openPorts.isNotEmpty) {
print('Found open ports : ${event.openPorts}');
}
}, onDone: () {
print('Scan completed');
});
//2. Single
bool isOpen = (await PortScanner.isOpen(target, 80)) == null;
//3. Custom
PortScanner.customDiscover(target, portList: const [22, 80, 139]);
for (final ActiveHost activeHost in await MdnsScannerService.instance.searchMdnsDevices()) {
final MdnsInfo? mdnsInfo = await activeHost.mdnsInfo;
print('''
Address: ${activeHost.address}
Port: ${mdnsInfo!.mdnsPort}
ServiceType: ${mdnsInfo.mdnsServiceType}
MdnsName: ${mdnsInfo.getOnlyTheStartOfMdnsName()}
''');
}
- Run host scan :
dart example/host_scan.dart
- Run port scan :
dart example/port_scan.dart
- Run mdns scan :
dart example/mdns_scan.dart
Vernet is the open source app built on top of this library. You can check out the code and implementation for more detailed use case of this package.
-
Support this project by becoming stargazer of this project.
-
Buy me a coffee.
Librepay -
Support me on Ko-Fi
Inspired from ping_discover_network