Android Network Service Discovery получает имя хоста (mDNS / Zeroconf) - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь получить имя хоста от службы, которая рекламирует себя в моей локальной сети, используя mDNS / Zeroconf. Я использую API обнаружения сетевых служб Android, но похоже, что Android не использует объявленное имя хоста, а пытается выполнить обратный поиск DNS, а в случае неудачи возвращает только IP-адрес.

На моем Macbook я могу сделать следующее:

$ dns-sd -B _myservice._tcp DATE: ---Mon 29 Oct 2018--- 17:35:25.332 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 17:35:25.333 Add 2 10 local. _myservice._tcp. My Service Name

$ dns-sd -L "My Service Name" _myservice._tcp DATE: ---Mon 29 Oct 2018--- 17:38:35.423 ...STARTING... 17:38:35.423 My\032Service\032Name._myservice._tcp.local. can be reached at test.my.service.local.:443 (interface 10)

Затем я могу использовать возвращенное имя хоста (test.my.service.local), чтобы найти соответствующий IP. У меня это работает правильно на iOS, используя NSNetServiceBrowser.

На Android в моем onServiceDiscovered, если я сделаю следующее: private static Map<String, Object> OnServiceDiscovered(NsdServiceInfo info) { Log.d(TAG, info.getHost().getHostAddress()); Log.d(TAG, info.getHost().getHostName()); }

Я получаю правильный IP-адрес, но getHostName возвращает «raspberrypi.local» (из / etc / hostname) или в другой сети только IP-адрес. Я подозреваю, что на Android getHost (). GetHostName () выполняет обратный поиск DNS и игнорирует имя хоста, которое объявляется с помощью mDNS.

Есть ли способ получить имя хоста из mDNS на Android?

...