在ZeroConf浏览器中找不到JmDNS服务

时间:2017-08-16 21:05:02

标签: java android zeroconf jmdns

我正在用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),但即使这个应用程序也看不到我的网络应用程序。

我的服务器在Windows PC上运行。我知道Windows并不支持mDNS,但Java应该与平台无关。我能做错什么?

1 个答案:

答案 0 :(得分:0)

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

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