Question

Je dois apporter son soutien à API-14 et plus et je ne suis donc pas en mesure d'utiliser le service de découverte de réseau fournis par Android.

Alors, j'ai essayé la bibliothèque JMDNS à cette fin.

J'ai deux questions relevant de la mise en œuvre de JMDNS. question n ° 1

J'ai mis en œuvre le code suivant mais je ne suis pas en mesure de découvrir de service.Lorsque j'utilise NSD dans le même but et sur le même réseau, je suis en mesure de découvrir le service respectif.Donc, je suis vraiment sûr de ce qui ne va pas avec mon code.Est-ce que quelqu'un pourrait vous aider?

public void onDiscoveryRequested(View v) {

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                setUp();

            }});

        thread.start();

    }


     private String type = "_http._tcp.";
        private JmDNS jmdns = null;
        private ServiceInfo serviceInfo;
        android.net.wifi.WifiManager.MulticastLock lock;
        android.os.Handler handler = new android.os.Handler();

    private void setUp() {

        android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) getSystemService(android.content.Context.WIFI_SERVICE);

        WifiInfo wifiinfo = wifi.getConnectionInfo();
          int intaddr = wifiinfo.getIpAddress();
          byte[] byteaddr = new byte[] { (byte) (intaddr & 0xff), (byte) (intaddr >> 8 & 0xff),
                  (byte) (intaddr >> 16 & 0xff), (byte) (intaddr >> 24 & 0xff) };
         InetAddress addr = null;
        try {
            addr = InetAddress.getByAddress(byteaddr);
        } catch (UnknownHostException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }


        lock = wifi.createMulticastLock("mylockthereturn");
        lock.setReferenceCounted(true);
        lock.acquire();
        try {
            jmdns = JmDNS.create(addr);
            jmdns.addServiceListener(type, new ServiceListener() {

                @Override
                public void serviceResolved(ServiceEvent ev) {
                    Log.e("tag", "Service resolved: " + ev.getInfo().getQualifiedName() + " port:" + ev.getInfo().getPort()
                            + " ip:" + ev.getInfo().getInetAddresses().toString());
                }

                @Override
                public void serviceRemoved(ServiceEvent ev) {
                    Log.e("tag", "Service removed: " + ev.getName());
                }

                @Override
                public void serviceAdded(ServiceEvent ev) {
                    // Required to force serviceResolved to be called again (after the first search)
                    jmdns.requestServiceInfo(ev.getType(), ev.getName(), 1);
                    Log.e("tag", "Service added: " + ev.getInfo().getQualifiedName() + " port:" + ev.getInfo().getPort()
                            + " ip:" + ev.getInfo().getInetAddresses());
                }
            });

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

question n ° 2 Existe-t-il un moyen de découvrir tous les services de course sur un réseau via JMDNS?

Quelqu'un pourrait-il m'aider s'il vous plaît avec les deux questions ci-dessus?

Merci et respections, Sunny

Était-ce utile?

La solution

Essayez "_http._tcp.local".comme type de service.J'ai vu un problème similaire lors de l'utilisation de JMDN avec AirPlay.

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