Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Ping address

Das Thema "Ping address" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 13.08.2011, 19:51   #1 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard Ping address

Ich muss meinen Frust jetzt einfach mal loswerden, weil dafür doch 1-2h sinnlos drauf gegangen sind.

Ich schreibe im Moment an einem Netzwerkscanner für eine App. Den Scanner hatte ich vorher schon normal mit Java zum Testen implementiert und er lief wunderbar. Dabei rufe ich unter anderem folgende Methode auf:

Code:
InetAddress.getByName(myIP).isReachable(3000)
Nun habe ich meinen Scanner auf Android portiert. Ich war etwas verwirrt, weil diese Methode nur bei meinem Router und dem Android Gerät selber true zurückgeliefert hat. Bei meinem PC und Laptop kam immer nur false. Die Beschreibung der Methode bei Android sagt:

Code:
Tries to reach this InetAddress. This method first tries to use  ICMP (ICMP ECHO REQUEST). When first step fails, a TCP connection on port  7 (Echo) of the remote host is established.
Und die normale API von Oracle:

Code:
Test whether that address is reachable. Best effort is made by the  implementation to try to reach the host, but firewalls and server configuration  may block requests resulting in a unreachable status while some specific ports  may be accessible. A typical implementation will use ICMP ECHO REQUESTs if the  privilege can be obtained, otherwise it will try to establish a TCP connection  on port 7 (Echo) of the destination host.
Da es für mich keinen Unterschied gab, habe ich alles mögliche probiert, um den Fehler zu finden. Danach habe ich einfach mal ein Socket zu einem Service von meinem PC aufgemacht und siehe da, das Socket konnte sich erfolgreich verbinden. Ich habe daraufhin weiter gegoogled und bei Stackoverflow kamen einige Meldungen, dass die isReachable(..) Methode bei Android mehr schlecht als recht funktioniert.



Für diese Info habe ich wirklich viel Zeit in den Sand gesetzt. Ich habe danach meine eigene Methode geschrieben, die funktioniert wunderbar. Wer sich dafür interessiert:


Code:
private boolean isReachable(String ip) {
        try {
            Process exec = Runtime.getRuntime().exec("ping " + ip);
            BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
            reader.readLine();//PING...bytes of data.
            
            String line1 = reader.readLine().trim();
            String line2 = reader.readLine().trim();
            exec.destroy();
            
            return line1.endsWith("ms") && line2.endsWith("ms");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
Kurz zur Erklärung: die erste eingelesene Zeile liefert nur die Info, dass jetzt ein Ping ausgeführt wird, daher kann man sie ignorieren. Die anderen beiden enden mit einer Zeit, zb. "1.89 ms", oder mit "Host not reachable". Das Szenario könnte man auf mehr Zeilen erweitern (oder die zweite auch wegnehmen).


Grüße
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Antwort

Stichworte
android inetaddress isreachable ping ip

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Timeout bei Ping Jürgen64 Samsung Galaxy Ace (S5830) Forum 0 19.04.2011 21:04
Alternative zu Youlu Address Book canada Sonstige Apps & Widgets 9 24.03.2011 18:52
PING für Android camou Kommunikation 3 23.04.2010 11:10
ping für android. leeno Kommunikation 3 20.03.2010 19:18
ping für android? skippe1988 HTC Magic Forum 2 01.11.2009 11:39




Du liest gerade: "Ping address" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.