【问题标题】:Bonjour service discovery not complete with Android's APIs. Am I missing something, or should I just use JmDNS?Bonjour 服务发现未通过 Android 的 API 完成。我错过了什么,还是应该只使用 JmDNS?
【发布时间】:2013-07-17 18:21:01
【问题描述】:

我在本地网络上的 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 提供的(不是非常详尽的)文档之外,似乎很少有文档,因此,如果其他人深入研究此内容并可以提供更多指导,我们将不胜感激!

【问题讨论】:

    标签: android bonjour wifi-direct


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这就是我的想法。我在很久以前就跳上了 Android NSD 的船并开始实施 JmDNS,而且事情进展得更加顺利:)
    • 您是否能够通过 NSD API 或您自己的类似于 JmDNS 的实现来获取 TXT 记录?谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多