Netzwerkstatus rausbekommen

Status
Nicht offen für weitere Antworten.

CLSK

Mitglied
Hallo zusammen,

ich möchte zuverlässig feststellen, ob ein Computer mit einem lokalen Netwzerk- und/oder mit dem Internet verbunden ist.

Zwecks dessen habe ich Internetserver und lokale Computer angepingt und so folgenden Code verwendet
Java:
InetAddress.getByName(IPString).isReachable(timeout);

Dabei entstanden folgende Probleme:
- Wenn ein IPString wie mit der URL (z.B. "www.google.de") übergeben wird, scheisst das Programm Exceptions wenn der Domanename nicht aufgelösst werden kann. Das ist nicht schön.
- Die direkte IP von google scheint mir nicht eindeutig. Eine Internetsuche nach "google IP" ergab viele verschidene IPs, die oft keine Gültigkeit mehr hatten.

Ich weiss nicht genau was ich von der ProcessBuilder - Klasse halten soll.
Java:
ProcessBuilder pb = new ProcessBuilder("ping", ip);
Ist das noch Platformunabhängig?


Kennt jemand eine eindeutige Methode den Netzwerkstatus abzufragen? Ist vll. die IP vom Internetanbieter oder dem Router immer eindeutig. Kann irgendwas im OS abgefragt werden? Ich würd auf das Herumpingen gerne verzichten.

MfG und vielen Dank!!!
CLSK
 

Wildcard

Top Contributor
ping kann auch nicht pingen wenn der Name nicht aufgelöst werden kann, das ist doch ganz klar. Google hat übrigens viele IPs.
 

DamienX

Aktives Mitglied
Hi,

wie mein Vorredner bereits sagte hat google etliche verschiedene IP adressen....

Du bist nicht der erste und wirst auch nicht der letzte sein der diese fragen stellt!
Java unterstützt meines Wissens nach kein ICMP evtl. weisst du das aber auch sonst
hättest du wahrscheinlich nicht den ProcessBuilder Umweg genommen.

Ich würde dir aber davon abraten weil ich einfach mal so sage dass der Ping befehl dann
auch auf jedem OS... jeder Shell etc. mit dem befehl "ping" aufrufbar sein muss.

Sicher kann man zwar auf Linux und Windows davon ausgehen aber mich persönlich würde
die Abhängigkeit stören.

P.S.: Der Tag an dem google.xy nicht erreichbar sein wird ist der Tag der Apokalypse ;P
 
T

tuxedo

Gast
Die Methode
Code:
isReachable()
würde ich nicht benutzen. Die checkt hauptsächlich ob Port 7 (echo port) offen ist (siehe JavaDoc)

Mach stattdessen doch lieber eine Socketverbindung zu google auf Port 80 auf.
Die Zeit die Java zum öffnen der Socketverbindung braucht liegt ziemlich exakt an der "ping zeit". D.h. du kannst das einfache Öffnen einer Socketverbindung als Ping-Ersatz benutzen, musst allerdings wissen welcher Port an der Zielseite offen ist (was ja bei google nicht das Problem sein sollte).

- Alex
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben