java - ZeroConf 浏览器中未找到 JmDNS 服务

标签 java android zeroconf jmdns

我正在用 Java(使用 Spark)开发一个 Web 应用程序,我希望它使用 JmDNS 以便能够在我的 Android 应用程序中找到此服务器。我按照 JmDNS page 中的步骤进行服务注册,我的代码如下所示:

try {
        // Create a JmDNS instance
        JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());

        // Register a service
        ServiceInfo serviceInfo = ServiceInfo.create("_http._tcp.local.", "smart_dom", 4567, "path=index.html");
        jmdns.registerService(serviceInfo);

    } catch (IOException e) {
        System.out.println(e.getMessage());
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

我在我的 Android 应用程序中实现了有关发现服务的部分,但它什么也没找到。我根据 this question 做了一些更改,甚至下载了 ZeroConf 浏览器(它依赖于 JmDNS),但即使这个应用程序也看不到我的网络应用程序。

我的服务器在 Windows PC 上运行。我知道Windows不支持mDNS,但Java应该独立于平台。我可能做错了什么?

最佳答案

如果有人想知道出了什么问题,我找到了答案。

就我而言,问题在于 JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());,尤其是 InetAddress.getLocalHost(),它返回 127.0.0.1,而不是我的 LAN 适配器 Wi-Fi 地址。使用 this 解决了问题解决方案。它基于通过 NetworkInterface.getNetworkInterfaces() 查找正确的接口(interface)。

关于java - ZeroConf 浏览器中未找到 JmDNS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722989/

相关文章:

java - 为什么 File.renameTo(...) 不创建目标的子目录?

java - Google Java api - feed.insert(entry) 期间出现错误 "com.google.gdata.util.ServiceException: Bad Gateway"

android - 自定义边框布局包含半个圆

ios - 更改名称后 iPad 停止响应 bonjour/zeroconf

erlang - 如何在 Erlang 中发送多播消息并重用端口?

java - Struts2 嵌套迭代器

java - HTTP 状态 404。描述请求的资源不可用

android - 带有 Android、iOS 和 WPF 客户端的 WCF Restful 服务

android - 与 Android 5.0 SDK (API 21) 一起使用时,setSupportProgressBarIndeterminateVisibility 引发 java.lang.NullPointerException

c# - 如何使用 Mono.Zeroconf 制作 AirPlay 接收器