ошибка fldter mDns на iOS - ошибка 49 Не удается назначить запрошенный адрес - PullRequest
0 голосов
/ 06 октября 2019

Я использую пакет multicast_dns для флаттера и получаю исключение на iOS. Работает как положено на Android. Я проверил это с помощью примера кода, поставляемого с пакетом, см. https://pub.dev/packages/multicast_dns

Ошибка:

Ошибка ОС: невозможно назначить запрошенный адрес, errno = 49 в_NativeSocket.joinMulticast. (socket_patch.dart)

Я пробовал разные адреса многоадресной рассылки, по умолчанию 224.0.0.251, 230.180.0.1 и 239.0.180.1.

import 'package:multicast_dns/multicast_dns.dart';

Future<void> main() async {
  // Parse the command line arguments.

  const String name = '_dartobservatory._tcp.local';
  final MDnsClient client = MDnsClient();
  // Start the client with default options.
  await client.start(mDnsAddress: InternetAddress('239.0.180.1'));

  // Get the PTR recod for the service.
  await for (PtrResourceRecord ptr in client
      .lookup<PtrResourceRecord>(ResourceRecordQuery.serverPointer(name))) {
    // Use the domainName from the PTR record to get the SRV record,
    // which will have the port and local hostname.
    // Note that duplicate messages may come through, especially if any
    // other mDNS queries are running elsewhere on the machine.
    await for (SrvResourceRecord srv in client.lookup<SrvResourceRecord>(
        ResourceRecordQuery.service(ptr.domainName))) {
      // Domain name will be something like "io.flutter.example@some-iphone.local._dartobservatory._tcp.local"
      final String bundleId =
          ptr.domainName; //.substring(0, ptr.domainName.indexOf('@'));
      print('Dart observatory instance found at '
          '${srv.target}:${srv.port} for "$bundleId".');
    }
  }
  client.stop();

  print('Done.');
}

Доктор флаттера:

mdnstest $ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.4, on Mac OS X 10.14.5 18F203, locale
    en)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    ✗ Android licenses not accepted.  To resolve this, run: flutter doctor
      --android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 11.0)
[✓] Android Studio (version 3.5)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.
...