Multi-platform network ping utility for Dart applications.

Created from templates made available by Stagehand under a BSD-style license.

Usage

A simple usage example:

import 'package:dart_ping/dart_ping.dart';

void main() async {
  // Create ping object with desired args
  final ping = Ping('google.com', count: 5);

  // Begin ping process and listen for output
  ping.stream.listen((event) {
    print(event);
  });
}

To use dart_ping on iOS, add the dart_ping_ios package as a dependency and register the iOS plugin before initializing Ping. For more detailed docs, see the dart_ping_ios package. Note that the iOS plugin requires the flutter sdk. (this is why it is not integrated into dart_ping directly)

// Register DartPingIOS
DartPingIOS.register();
// Create ping object with desired args
final ping = Ping('google.com', count: 5);

To print the underlying ping command that will be used (useful for debugging):

print('Running command: ${ping.command}')

To prematurely halt the process:

await ping.stop()

To override the parser to support an alternative OS language (Portuguese shown here):

final parser = PingParser(
    responseStr: RegExp(r'Resposta de'),
    responseRgx: RegExp(r'de (.*): bytes=(\d+) tempo=(\d+)ms TTL=(\d+)'),
    summaryStr: RegExp(r'Perdidos'),
    summaryRgx: RegExp(r'Enviados = (\d+), Recebidos = (\d+), Perdidos = (\d+)'),
    timeoutStr: RegExp(r'host unreachable'),
    unknownHostStr: RegExp(r'A solicitação ping não pôde encontrar o host'));

final ping = Ping('google.com', parser: parser);

To override the character encoding to ignore non-utf characters:

final ping = Ping('google.com', encoding: Utf8Codec(allowMalformed: true));

macOS Release Build with App Sandbox

When building in release mode with app sandbox enabled, you must ensure you add the following entitlements to the Release.entitlements file in your macos folder:

<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>

Windows Compatibility

When using this package with Flutter for Windows, release builds may not work as intended. This is due to a known issue with the Flutter framework on windows. There is a workaround described here.

Features and bugs

Please file feature requests and bugs at the issue tracker.

Libraries

dart_ping