Code: Select all
[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)
Code: Select all
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 in Info.plist hinzugefügt.
NSBonjourServices mit _androidtvremote2._tcp hinzugefügt.
Lokale Netzwerkberechtigung ist in den iOS-Einstellungen aktiviert.
Funktioniert einwandfrei auf iOS-Simulator und Android-Geräten.
Sowohl iPhone als auch Android TV nutzen dasselbe WLAN.
Trotzdem wird auf einem echten iPhone immer eine SocketException (OS-Fehler: Keine Route zum Host, errno = 65) ausgelöst.
 Mobile version
 Mobile version