native_mdns_scanner 1.0.2 copy "native_mdns_scanner: ^1.0.2" to clipboard
native_mdns_scanner: ^1.0.2 copied to clipboard

Dart FFI bindings for macOS mDNS/Bonjour services. Provides native access to multicast DNS functionality on macOS.

example/native_mdns_scanner_example.dart

import 'package:native_mdns_scanner/native_mdns_scanner.dart';

void main() async {
  final mdnsFfi = MdnsFfi();

  try {
    print('πŸ” Basic mDNS scanning example\n');

    // Example 1: Simple scan for Chromecast devices
    print('πŸ“± Scanning for Chromecast devices...');
    mdnsFfi.startScan('_googlecast._tcp');

    // Wait for 10 seconds
    await Future.delayed(Duration(seconds: 10));

    mdnsFfi.stopScan();

    final devices = mdnsFfi.foundDevices;
    print('Found ${devices.length} Chromecast devices:');
    for (final device in devices) {
      print('  β€’ ${device.name} at ${device.ip}:${device.port}');
      if (device.txtRecords.isNotEmpty) {
        print('    TXT records: ${device.txtRecords}');
      }
    }

    print('\n' + '=' * 50);

    // Example 2: Scan multiple service types
    print('🎯 Scanning multiple service types simultaneously...');

    mdnsFfi.clearFoundDevices();
    final multiDevices = await mdnsFfi.scanMultipleServices([
      '_googlecast._tcp',
      '_airplay._tcp',
      '_raop._tcp',
    ], timeout: Duration(seconds: 15));

    print('\nFound ${multiDevices.length} devices total:');
    final devicesByType = mdnsFfi.getDevicesByServiceType();

    for (final serviceType in devicesByType.keys) {
      final typeDevices = devicesByType[serviceType]!;
      print('\n$serviceType (${typeDevices.length} devices):');
      for (final device in typeDevices) {
        print('  β€’ ${device.name} (${device.ip}:${device.port})');
      }
    }

    print('\n' + '=' * 50);

    // Example 3: Periodic scanning
    print('πŸ”„ Periodic scanning example...');
    print('Sending queries every 3 seconds for 12 seconds total\n');

    mdnsFfi.clearFoundDevices();
    final periodicDevices = await mdnsFfi.scanMultipleServicesWithPeriodic(
      [
        '_googlecast._tcp',
      ],
      timeout: Duration(seconds: 12),
      queryInterval: Duration(seconds: 3),
    );

    print('\nPeriodic scan results:');
    for (final device in periodicDevices) {
      print(
          '  β€’ ${device.name} found in query #${device.queryNumber} at ${TimingAnalyzer.formatTime(device.foundAt)}');
    }

    // Show timing analysis
    if (periodicDevices.isNotEmpty) {
      print('\nπŸ“Š Timing Analysis:');
      TimingAnalyzer.analyzeTimings(periodicDevices);
    }
  } catch (e) {
    print('❌ Error during scanning: $e');
  } finally {
    print('\n🧹 Cleaning up...');
    mdnsFfi.dispose();
    print('βœ… Done!');
  }
}
0
likes
0
points
42
downloads

Publisher

verified publisherchangyy.app

Weekly Downloads

Dart FFI bindings for macOS mDNS/Bonjour services. Provides native access to multicast DNS functionality on macOS.

Repository (GitHub)
View/report issues

Topics

#ffi #mdns #bonjour #native #networking

License

unknown (license)

Dependencies

ffi

More

Packages that depend on native_mdns_scanner