3

我正在尝试使用“网络服务发现”API 访问 android 应用程序中的 mDNS TXT 记录。基本上我的应用程序需要发现服务并从中访问 TXT 记录。

如何从 android 网络服务发现 API 访问 mDNS TXT 记录。是否支持从网络服务发现 API 访问 TXT 记录。

4

3 回答 3

3

仅通过NsdServiceInfo 上的 getAttributes() 方法在 API 级别 21 (Android 5.0) 中添加了对访问 TXT 记录的支持。

如果您需要支持较旧的 Android 版本,很遗憾您需要使用jmDNS 之类的库来访问 TXT 记录。

于 2014-11-04T22:26:48.443 回答
3

正如评论中提到的那样,NsdServiceInfo.getAttributes()方法是访问 TXT 记录,但一个错误意味着 getAttributes() 结果为空。如果您需要 TXT 记录,这会使网络服务发现 API 无用。

我希望谷歌能解决这个问题,因为与例如jmDNS相比,使用 NsdManager在查找服务方面似乎要快得多。同时,如果它有帮助,我开发了一种解决方法,可以在 NsdManager 通知新服务时通过网络手动获取 TXT 记录。这已作为MIT 许可证下的库开源。

于 2016-02-08T11:32:49.833 回答
0

我的同事发现了一个很棒的库来绕过这个使用真正的 Apple DNSSD Java API 的错误:

接收DNSSD

BonjourBrowser是一个很棒的示例应用程序,它使用了 Android 上的所有功能。它也非常适合创建您自己的 mDNS 服务以进行测试。

我尝试了 Steve Lilly 下面提到的 TinyDNSSD,但这对我来说不可用,因为当您的服务没有所有记录时它不起作用。当 fe A-Record 丢失时,它不起作用 (TimeOutException)。

于 2017-06-14T12:46:21.173 回答