Wie finde ich Android-Geräte in Ihrem Netzwerk?

Ich möchte in der Lage sein zu entdecken, die Android-Geräte in meinem Netzwerk und möglicherweise Gerät abrufen, einige Informationen über Sie. Dies ist sehr einfach mit Apple-Geräte, da laufen Sie Bonjour-Dienste. Aber ich kann nicht scheinen zu finden, ein ähnlicher Dienst läuft auf Android.

Diese arbeiten müssen ohne änderungen am Android Gerät, zu installieren einen Dienst, oder öffnen einige port. Es ist gedacht für die Arbeit mit Vanille Android-Geräte in der Weise, dass Bonjour hilft Ihnen, Vanille-Apple-Geräte. In der Lage zu sein einfach nur vergewissern, dass das Gerät mit Android ausreichen würde.


Gewählte Antwort: Obwohl es nicht die top-bewerteten Antwort (noch) nicht, schauen Sie sich bitte die Antwort von Luis. Als er erwähnt, können Sie einen DNS-lookup (mit Ihren lokalen DNS-server) zu entdecken Android-Geräte. Ich habe festgestellt, dass dies eine Erfolgsquote von 100%, als Android-Kräfte-Geräte verwenden ein hostname von android-_____. Dies ist offenbar schwer zu ändern, auf dem Handy, auch wenn es verwurzelt ist. Also ich denke, das ist eine ziemlich genaue Methode. Danke, Luis!

Example:
$ nslookup 192.168.1.104 192.168.1.1
Server:     192.168.1.1
Address:    192.168.1.1#53

104.1.168.192.in-addr.arpa  name = android-711c129e251f14cf.\001.

Beispielcode: Wenn Sie wollte implementieren Sie diese in Java (z.B. laufen auf Android), können Sie nicht problemlos verwenden, getHostName (), weil es verwendet die externen DNS-Server. Sie möchten den lokalen DNS-server auf deinem router, zum Beispiel. Luis erwähnt unten, dass könnte man ändern Sie die DNS-Server der Wifi-Verbindung, aber das könnte möglicherweise brechen andere Dinge. Stattdessen habe ich gefunden, die dnsjava Bibliothek zu äußerst hilfreich sein, senden Sie gezielte DNS-Anfragen. Hier finden Sie einige Beispiel-code mit der Bibliothek:

        String ipAddress = "104.1.168.192";
        String dnsblDomain = "in-addr.arpa";
        Record[] records;
        Lookup lookup = new Lookup(ipAddress + "." + dnsblDomain, Type.PTR);
        SimpleResolver resolver = new SimpleResolver();
        resolver.setAddress(InetAddress.getByName("192.168.1.1"));
        lookup.setResolver(resolver);
        records = lookup.run();

        if(lookup.getResult() == Lookup.SUCCESSFUL) {
              for (int i = 0; i < records.length; i++) {
                if(records[i] instanceof PTRRecord) {
                  PTRRecord ptr = (PTRRecord) records[i];
                  System.out.println("DNS Record: " + records[0].rdataToString());
                }
              }
        } else {
            System.out.println("Failed lookup");
        }

    } catch(Exception e) { 
        System.out.println("Exception: " + e);
    }

Das gibt mir die Ausgabe:

DNS Record: android-711c129e251f14cf.\001.

Bingo.

InformationsquelleAutor der Frage gnychis | 2012-11-02

Schreibe einen Kommentar