// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Example script to illustrate how to use the mdns package to discover services // on the local network. // ignore_for_file: avoid_print import 'package:multicast_dns/multicast_dns.dart'; Future main(List args) async { if (args.isEmpty) { print(''' Please provide the name of a service as argument. For example: dart mdns_sd.dart [--verbose] _workstation._tcp.local'''); return; } final bool verbose = args.contains('--verbose') || args.contains('-v'); final String name = args.last; final MDnsClient client = MDnsClient(); await client.start(); await for (final PtrResourceRecord ptr in client .lookup(ResourceRecordQuery.serverPointer(name))) { if (verbose) { print(ptr); } await for (final SrvResourceRecord srv in client.lookup( ResourceRecordQuery.service(ptr.domainName))) { if (verbose) { print(srv); } if (verbose) { await client .lookup(ResourceRecordQuery.text(ptr.domainName)) .forEach(print); } await for (final IPAddressResourceRecord ip in client.lookup( ResourceRecordQuery.addressIPv4(srv.target))) { if (verbose) { print(ip); } print('Service instance found at ' '${srv.target}:${srv.port} with ${ip.address}.'); } await for (final IPAddressResourceRecord ip in client.lookup( ResourceRecordQuery.addressIPv6(srv.target))) { if (verbose) { print(ip); } print('Service instance found at ' '${srv.target}:${srv.port} with ${ip.address}.'); } } } client.stop(); }