Search packages, repositories and app categories

Package detailsv6.0.11

network_tools

Networking Tools library which can help you discover open ports, devices on subnet and many other things.

AndroidiOSmacOSWindowsLinux
30-day downloads
9.7K
Likes
57
Pub points
160

Install package

flutter pub add network_tools

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The network_tools package is a Flutter utility library designed to assist with network discovery and diagnostics. It enables developers to scan subnets, detect open ports, and identify devices on a local network. Built for cross-platform use, it supports Android, iOS, macOS, Windows, and Linux, making it ideal for applications requiring low-level network interaction. The library leverages native platform capabilities through platform channels, ensuring reliable performance across environments. It's particularly useful in network monitoring, IoT device detection, and troubleshooting tools. Its lightweight design and straightforward API make integration simple for developers focused on networking features.

Use cases

  • Local network scanning
  • Device discovery on subnet
  • Port scanning for diagnostics
  • IoT device detection
  • Network troubleshooting

Key features

  • Cross-platform support
  • Subnet scanning
  • Open port detection
  • Device enumeration
  • Platform channel integration

Suitable for

  • Network diagnostic apps
  • IoT management tools
  • System monitoring utilities
  • DevTools for network analysis
  • Educational networking projects

Considerations

  • Requires appropriate system permissions
  • May need root/admin access on some platforms
  • Performance varies by network size
  • Limited to local network scope
  • Depends on underlying OS networking capabilities

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Cross Platform Network Tools

pub package Dart Code Coverage codecov

Network Tools Supported

  1. Host Scanner

    1. Search all devices on subnet
    2. Get mac address of devices on Linux, macOS and Windows.
    3. Search devices for a specific port open.
  2. Port Scanner

    1. Single Port scan
    2. Range
    3. Custom

Partly Work:

  1. Mdns Scanner

Network Tools Flutter package

Please check network_tools_flutter package for extensive support to features on different platforms.

Import package in your app

import 'package:network_tools/network_tools.dart';

Configure network tools in main function

For dart native
Future<void> main() async {
  await configureNetworkTools('build', enableDebugging: true);
  runApp(const MyApp());
}
For flutter apps
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());
}

Usage

Host Scanner
 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.
Port Scanner
  //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]);
Mdns Scanner
  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 examples
  1. Run host scan : dart example/host_scan.dart
  2. Run port scan : dart example/port_scan.dart
  3. Run mdns scan : dart example/mdns_scan.dart

Sample App

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 and Donate

  1. Support this project by becoming stargazer of this project.

  2. Buy me a coffee.

    Librepay
    Donate using Liberapay
  3. Support me on Ko-Fi

    ko-fi

Inspired from ping_discover_network

Categories

Dependencies

Dependency list 14 items

Source repository

Projects using this package