android - Bonjour 服务发现未通过 Android 的 API 完成。我是不是遗漏了什么,或者我应该只使用 JmDNS?

标签 android bonjour wifi-direct

我在本地网络上的 MacBook Pro 上运行了 Bonjour 服务,我试图在 Android 设备 (Galaxy Nexus) 上的客户端应用程序中检测到该服务。

我已经通过两种方式实现了 Bonjour 服务发现。第一种是通过Android的NSD包,详细here .我已经实现了他们在“发现网络服务”部分中建议的代码。它发现我的服务很好,但是没有 API 调用来访问该服务的 txt 记录,我需要访问它以便我可以构建 URL 来命中该服务,使这种方法成为一种交易破坏者,直到我可以访问它。

这促使我尝试 Bonjour 服务发现的其他方法详细 here在“发现附近的服务”部分,因为它们有一个用于发现 txt 记录的 API。我知道服务发现开始了,因为它没有记录任何错误,但是这种方法没有为我发现任何 Bonjour 服务,甚至没有发现 Apple 默认情况下在他们的 MacBook 上拥有的所有服务。它的实现与他们网站上的完全一样,那么我需要做什么才能让它发挥作用呢?除了 Bonjour 服务之外,我的 MacBook 是否还需要运行其他程序才能被识别为 WiFi-Direct 设备?或者,在这种设置下使用 Android 的 API 是不可能的,在 Android 的 API 更完整/记录之前,我是否应该寻找像 JmDNS 这样的库来做我需要的事情?

对于这些新的 Nsd API,除了 Android 提供的(不是很全面)之外,似乎只有很少的文档,所以如果有人深入研究过这个并可以提供更多指导,我们将不胜感激!

最佳答案

这可能取决于 MacBook Pro 提供的服务实现。

“我在本地网络上的 MacBook Pro 上运行 Bonjour 服务” - 如果您将 NSD 与 WI-FI direct 一起使用,我相信它不会尝试查找在您的本地网络中运行的服务,而是会通过 WI-FI direct 且无连接查找在附近设备中运行的服务。

“但是,使用 Wi-Fi Direct 服务发现可以让您直接发现附近设备的服务,而无需连接到网络”。

我认为这意味着您的 MacBook Pro 可能需要单独的实现来帮助 WI-FI 直接通信,以便它可以响应不在本地网络中的发现请求。抱歉,我现在不能说更多。

关于android - Bonjour 服务发现未通过 Android 的 API 完成。我是不是遗漏了什么,或者我应该只使用 JmDNS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17707318/

相关文章:

java - 安卓 Wi-Fi 直连 : re-connect to a device without re-Discovery

android - Kotlin型干扰失败

android - ActionBar 选项卡删除填充和分隔符

java - 除了 JMDNS,还有其他用于 bonjour/zeroconf 的 Java 库吗?

ios - NSNetServiceBrowsing 无法解析服务并出现错误 -72004

android - 适用于 Android 版本 2.3+ 的 WiFi 直连

android - 从android中表格布局中的每一行获取值

java - 安卓库

ios4 - 如何从 iOS 设备访问 WiFi 网络共享

android - Intent 打开 Wi-Fi Direct 设置