Question

J'essaie de faire fonctionner JMDNS dans mon programme Android. Je suis en mesure de le faire découvrir les appareils que je veux, mais je ne comprends pas pleinement comment obtenir les informations de JMDNS à l'objet qui a commencé la tâche JMDNS. Voici mon code.

 protected void browse() {       
      try {
        jmdns = (JmDNSImpl) JmDNS.create();

        jmdns.addServiceListener(type, listener = new ServiceListener() {
            public void serviceResolved(ServiceEvent ev) {

            }
            public void serviceRemoved(ServiceEvent ev) {                   

            }
            public void serviceAdded(ServiceEvent event) {    
                DNSEntry addressEntry = jmdns.getCache().getDNSEntry(name, DNSRecordType.TYPE_A, DNSRecordClass.CLASS_ANY);
                if (addressEntry instanceof DNSRecord) {
                    ServiceInfo cachedAddressInfo = ((DNSRecord) addressEntry).getServiceInfo(true);
                    if (cachedAddressInfo != null) {
                        for (Inet4Address address : cachedAddressInfo.getInet4Addresses()) {
                          //I need to get the address that is here back out of this listener to the main thread
                        }
                    }
                }
            }

        });
    } catch (IOException e) {
        e.printStackTrace();
    }

Le problème que je rencontre est que j'ai un objet de gestionnaire de services qui a une instance d'un objet de navigateur qui contient la méthode de navigation. Je ne suis pas en mesure d'obtenir l'accès d'objet Service Manager à la variable d'adresse. Parce que JMDNS engendre son propre fil lorsqu'il est créé pour exécuter ses tâches, j'ai essayé d'utiliser un gestionnaire et de courir pour envoyer des messages avec la variable, mais je n'arrive pas à bien faire les choses. Quelqu'un peut-il aider?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top