Java 在Android上使用jmDNS发现网络上的所有服务

Java 在Android上使用jmDNS发现网络上的所有服务,java,android,networking,service-discovery,jmdns,Java,Android,Networking,Service Discovery,Jmdns,我正在Android项目中使用这个项目中的jmdns.jar 我目前正在尝试查找网络上的所有服务。我不能使用Android NSD,所以请避免建议将其作为解决方案 protected Object doInBackground(Object[] params) { try { WifiManager wifi = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVIC

我正在Android项目中使用这个项目中的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有一个
\u服务。\u dns-sd.\u udp
,可用于服务类型并查找网络上的所有服务。这不适用于jmDNS。我在有限的文档中找不到关于这个的任何东西

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


我的AndroidManifest中有正确的烫发。

尝试在末尾添加点,我的jmdns应用程序在没有它的情况下崩溃。。
还可以尝试添加.local。请自己选择服务类型。

尝试在末尾添加点,我的jmdns应用程序在没有该点的情况下崩溃。。
还可以尝试添加.local。与服务类型一起使用。

共享一些解决问题的代码通常是个好主意。共享一些解决问题的代码通常是个好主意。