Обнаружение всех сервисов в сети с помощью jmDNS на Android

Я использую файл jmdns.jar из этого проекта https://github.com/twitwi/AndroidDnssdDemo. в моем проекте Android.

В настоящее время я пытаюсь найти все службы в моей сети. Я не могу использовать 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.


person David    schedule 23.02.2017    source источник


Ответы (1)


Попробуйте добавить точку в конце, мое приложение jmdns зависло без нее. Также попробуйте добавить .local. самостоятельно с типом услуги.

person Stef    schedule 03.12.2019
comment
Обычно хорошей идеей является поделиться кодом, который решает проблему. - person Ankit Kante; 03.12.2019