Android网络服务发现获取主机名(mDNS / Zeroconf)

时间:2018-10-29 17:16:19

标签: android mdns zeroconf nsd

我正在尝试从使用mDNS / Zeroconf在本地网络上进行广告宣传的服务获取主机名。我正在使用Android的网络服务发现API,但似乎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。我已经使用NSNetServiceBrowser在iOS上正常工作了。

如果我执行以下操作,请在onServiceDiscovered上的Android上: 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通告的主机名。

有什么方法可以从Android上的mDNS获取主机名吗?

0 个答案:

没有答案