Конфигурация сети для JmDNS на Android. Услуга добавлена, но не решена

У меня возникли проблемы с разрешением служб mDNS с помощью JmDNS на Android. Служба разрешается время от времени, но в большинстве случаев вызывается только serviceAdded(), а не serviceResolved()! Кто-нибудь знает, в чем может быть проблема? Если есть какая-то конфигурация сети, которую мне не хватает или что-то в этом роде?

Я использую Ethernet (eth1) со следующей конфигурацией:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:18:7d:32:77:40 brd ff:ff:ff:ff:ff:ff inet 172.18.0.191/24 brd 172.18.0.255 scope global eth0 inet6 2a00:801:19:1:218:7dff:fe32:7740/64 scope global dynamic valid_lft 2591918sec preferred_lft 604718sec inet6 fe80::218:7dff:fe32:7740/64 scope link tentative dadfailed valid_lft forever preferred_lft forever 3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN link/sit 0.0.0.0 brd 0.0.0.0 5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:14:d1:b0:7b:89 brd ff:ff:ff:ff:ff:ff inet 192.168.3.162/24 scope global eth1 inet6 fe80::214:d1ff:feb0:7b89/64 scope link valid_lft forever preferred_lft forever
Routing table: 172.18.0.1 dev eth0 scope link 224.0.0.251 dev eth1 scope link 192.168.3.0/24 dev eth1 proto kernel scope link src 192.168.3.162 172.18.0.0/24 dev eth0 proto kernel scope link src 172.18.0.191 metric 202 default via 172.18.0.1 dev eth0 default via 172.18.0.1 dev eth0 metric 202

Вот код, который я использую:

            try {
                InetAddress address = InetAddress.getByName("192.168.3.162");
                jmDNS = JmDNS.create(address);

                serviceListener = new ServiceListener() {

                    @Override
                    public void serviceResolved(ServiceEvent serviceEvent) {
                        String additions = "";
                        if (serviceEvent.getInfo().getInetAddresses() != null && serviceEvent.getInfo().getInetAddresses().length > 0) {
                            additions = serviceEvent.getInfo().getInetAddresses()[0].getHostAddress();
                        }
                        Log.i("GPSservice.NetworkOperations", "Service resolved: " + serviceEvent.getInfo().getQualifiedName() + " port:" + serviceEvent.getInfo().getPort() + ", " + additions);
                    }

                    @Override
                    public void serviceRemoved(ServiceEvent serviceEvent) {
                        Log.i("GPSservice.NetworkOperations", "Service removed: " + serviceEvent.getName());
                    }

                    @Override
                    public void serviceAdded(ServiceEvent serviceEvent) {
                        Log.i("GPSservice.NetworkOperations", "service added");
                        jmDNS.requestServiceInfo(INVENTORY_TYPE, serviceEvent.getName());
                    }
                };
                jmDNS.addServiceListener(INVENTORY_TYPE, serviceListener);

            } catch (Exception e) {
                Log.e("GPSservice.NetworkOperations", "JmDNS error.", e);
            }

person JohnyTex    schedule 02.05.2014    source источник


Ответы (1)


У меня была такая же проблема.

Нашел ответ здесь: JmDNS: не удается разрешить службу

По сути, просто извлеките последний исходный код из репозитория SourceForge SVN для 3.4.1, и это решит проблемы с разрешением служб.

http://jmdns.sourceforge.net/source-repository.html

person Blake Hamilton    schedule 02.10.2014
comment
Я пробовал это. Это не сработало для меня. Вместо этого решением было переключиться на mdnsjava, который работает безупречно. - person JohnyTex; 02.10.2014