Почему мой Android устройство не может обнаружить устройства в локальной сети с доменным именем .local?

Как настроить Android смартфон в качестве точки доступа WiFi для устройства с поддержкой mDNS (например, dev.local), чтобы можно было получить доступ к нему через имя устройства, а не только через IP? Терминал Android показывает сообщение об ошибке "Unable to parse DNS server list. Unicast DNS-SD unavailable", когда выполняю команду "mdnsd -debug". Как можно решить эту проблему на устройстве с операционной системой ArrowOS 13.1?
  • 24 февраля 2024 г. 7:58
Ответы на вопрос 2
Проблема, с которой вы сталкиваетесь, связана с тем, что Android по умолчанию не поддерживает обнаружение устройств в локальной сети с доменным именем .local из-за ограничений на использование mDNS (Multicast DNS) в системе. 

Чтобы настроить Android смартфон в качестве точки доступа WiFi для устройства с поддержкой mDNS, вам может потребоваться использовать сторонние приложения или модифицировать операционную систему. 

Для решения проблемы с командой "mdnsd -debug" и сообщением об ошибке "Unable to parse DNS server list. Unicast DNS-SD unavailable" на устройстве с ArrowOS 13.1, вы можете попробовать следующие рекомендации:

1. Убедитесь, что ваше устройство имеет правильные настройки DNS. Проверьте, что DNS-серверы правильно сконфигурированы и доступны для использования.

2. Убедитесь, что ваше устройство имеет соответствующие разрешения и привилегии для работы с mDNS и выполнения команды "mdnsd -debug". 

3. Попробуйте перезагрузить устройство и выполнить команду снова. Иногда перезапуск устройства может помочь исправить проблемы с выполнением команд.

Если указанные выше рекомендации не помогли решить проблему, возможно потребуется более глубокое исследование причины ошибки или обращение к специалистам по Android и операционной системе ArrowOS для дальнейшей поддержки и помощи.
Во первых, пробуем это на реальных устройствах. В эмуляторах андроид студии mDNS заработало на образах API 34. 
Во-вторых, mdns подчиняется правилам UDP бродкаста, то есть по умолчанию в пределах одной подсети.
В третьих, протокол асинхронный. Можно подписаться на сообщения.
В четвертых, таймаут явного ресолва очень большой, приходится самому его ограничивать.
В пятых, имя dev.local не стандартно. И второй уровень используют для уточнения типа службы.
Так как подписку вешаем по типу службы. Н-р ('_ipp._local') Что бы поймать все принтеры.
Похожие вопросы