【问题标题】:Discovering all services on the network using jmDNS on Android在 Android 上使用 jmDNS 发现网络上的所有服务
【发布时间】:2017-02-23 09:49:09
【问题描述】:

我在我的 Android 项目中使用来自这个项目 https://github.com/twitwi/AndroidDnssdDemo 的 jmdns.jar。

我目前正在尝试查找我网络上的所有服务。我不能使用 Android NSD,所以请避免将其作为解决方案。

protected Object doInBackground(Object[] params) {
            try {
                WifiManager wifi = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
                final InetAddress deviceIpAddress = InetAddress.getByName(Formatter.formatIpAddress(wifi.getConnectionInfo().getIpAddress()));
                multicastLock = wifi.createMulticastLock(getClass().getName());
                multicastLock.setReferenceCounted(true);
                multicastLock.acquire();

                jmDNS = JmDNS.create(deviceIpAddress, "Android Device Discovery");
                jmDNS.addServiceListener("_http._tcp.local.", new ServiceListener() {//_services._dns-sd._udp _http._tcp.local. _workstation._tcp.local.
                    @Override
                    public void serviceAdded(ServiceEvent serviceEvent) {
                       jmDNS.requestServiceInfo("", "", 1000);
                    }

                    @Override
                    public void serviceRemoved(ServiceEvent serviceEvent) {
                    }

                    @Override
                    public void serviceResolved(ServiceEvent serviceEvent) {
                        System.out.println(serviceEvent.getInfo().getHostAddress());
                        System.out.println(serviceEvent.getInfo().getName());
                    }
                });

            }catch(IOException e) {
                Log.e(TAG, e.getMessage(), e);
            }
}

以上代码为我提供了网络上打印机的地址和名称。那太棒了。我想要的是一种类型,它可以捕获我网络上广播的所有服务。 Android NSD 有一个_services._dns-sd._udp,可用于服务类型并查找网络上的所有服务。这不适用于 jmDNS。我在有限的文档中找不到任何关于此的内容。

我是否需要自己完成并添加所有服务类型?这不是一个非常干净的解决方案。

我的 AndroidManifest 中有适当的权限。

【问题讨论】:

    标签: java android networking service-discovery jmdns


    【解决方案1】:

    尝试在末尾添加点,没有它我的 jmdns 应用程序崩溃了.. 还可以尝试添加 .local。由您自己使用服务类型。

    【讨论】:

    • 分享一些解决问题的代码通常是个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2017-06-03
    相关资源
    最近更新 更多