Обнаружение mDNS работает на симуляторе iOS, но не на реальном устройстве (SocketException errno = 65)IOS

Программируем под IOS
Ответить
Anonymous
 Обнаружение mDNS работает на симуляторе iOS, но не на реальном устройстве (SocketException errno = 65)

Сообщение Anonymous »

Я использую пакет multicast_dns от Flutter для обнаружения телевизоров Android TV в локальной сети с помощью mDNS. Код отлично работает на симуляторе iOS, но на реальном iPhone происходит сбой со следующей ошибкой:

Код: Выделить всё

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: SocketException: Send failed (OS Error: No route to host, errno = 65), address = 0.0.0.0, port = 5353
#0      _NativeSocket.send (dart:io-patch/socket_patch.dart:1521:34)
#1      _RawDatagramSocket.send (dart:io-patch/socket_patch.dart:3078:15)
#2      MDnsClient.lookup (package:multicast_dns/multicast_dns.dart:227:22)

Код: Выделить всё

Future search() async {
const String name = '_androidtvremote2._tcp';
final MDnsClient client = MDnsClient();

try {
await client.start();

await for (final PtrResourceRecord ptr in client
.lookup
(ResourceRecordQuery.serverPointer(name))) {
final fullName = ptr.domainName;
final friendlyName = fullName.split('.')[0];

await for (final SrvResourceRecord srv in client
.lookup(
ResourceRecordQuery.service(ptr.domainName),
)) {
final host = srv.target;
final port = srv.port;

await for (final IPAddressResourceRecord addr in client
.lookup(
ResourceRecordQuery.addressIPv4(host),
)) {
final ip = addr.address.address;
print('Found $friendlyName at $ip:$port');
}
}
}

client.stop();
} catch (error) {
print(error);
}
}

Я уже сделал следующее:
Добавил NSLocalNetworkUsageDescription в Info.plist.
Добавил NSBonjourServices с _androidtvremote2._tcp.
Разрешение локальной сети включено в настройках iOS.
Отлично работает на Симулятор iOS и устройства Android.
И iPhone, и Android TV подключены к одной и той же сети Wi-Fi.
Несмотря на все это, на реальном iPhone всегда выдается SocketException (ошибка ОС: нет маршрута к хосту, errno = 65).

Подробнее здесь: https://stackoverflow.com/questions/797 ... ception-er
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»