我正在使用Java开发Java Web应用程序(使用Spark),并且希望它使用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),但是即使该应用程序也看不到我的Web应用程序。

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

最佳答案

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

在我的情况下,问题出在JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());上,尤其是InetAddress.getLocalHost(),它返回了127.0.0.1,而不是我的LAN适配器wi-fi地址。使用this解决方案解决了该问题。它基于通过NetworkInterface.getNetworkInterfaces()寻找正确的接口。

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

10-10 03:24