在 ZeroConf 浏览器中找不到 JmDNS 服务
JmDNS service not found in ZeroConf browser
我正在 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 应该独立于平台。我做错了什么?
如果有人想知道哪里出了问题,我找到了答案。
在我的例子中,问题出在 JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());
,尤其是 InetAddress.getLocalHost()
,它返回 127.0.0.1 而不是我的 LAN 适配器 wi-fi 地址。使用 this 解决方案解决了问题。它基于通过 NetworkInterface.getNetworkInterfaces()
.
寻找正确的接口
我正在 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 应该独立于平台。我做错了什么?
如果有人想知道哪里出了问题,我找到了答案。
在我的例子中,问题出在 JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());
,尤其是 InetAddress.getLocalHost()
,它返回 127.0.0.1 而不是我的 LAN 适配器 wi-fi 地址。使用 this 解决方案解决了问题。它基于通过 NetworkInterface.getNetworkInterfaces()
.