Java Erreichbarkeit von PCs testen |
|
Java Erreichbarkeit von PCs testen |
|
Hallo Zusammen,
Ich schreibe grade zu administrationszwecken ein kleines Script, welches unter anderem die erreichbarkeit von PCs im Netzwerk testen soll.
Dafür hatte ich die Funktion isReachable aus der Klasse InetAdress gefunden, welche genau das erledigt. Jedoch braucht diese Funktion sehr lange um die Verfügbarkeit eines Hosts zu prüfen. Unter einem ttl wert von 2000 ms gibt die Funktion keine anständigen Ergebnisse zurück, und dadurch dauert ein Scan von 120 Rechnern schonmal 4 Minuten, was mir doch sehr lange vorkommt.
Gibt es eine schnellere Methode, mit der ich die Verfügbarkeit prüfen kann, oder benutze ich die besagte Funktion evtl falsch.
Die Sprache ist Java
mfg
__________________ Alle sagten, es geht nicht, da kam einer, der wusste das nicht und tat es einfach...
|
|
19.08.2009 20:47 |
|
|
|
naja ... ich denke nicht, dass die wartezeit bis zu einer ICMP antwort maßgeblich durch java an sich oder die vm ausgebremst wird ... du könntest versuchen per JNI (Beispiel) selbst ein ICMP echo zu senden, aber es ist unwahrscheinlich, das das ganze erheblich schneller wird ...
paralellisierung würde sich aber anbieten:
während deiner 4 min laufzeit hat die java VM ja die meiste zeit sendepause, weil sie auf antworten wartet ...
man könnte dies durch paralellisierung verbessern, da das ganze schon erheblich schneller würde, wenn du für so eine aufgabe sagen wir mal 32 worker threads erstellst, die jeweils für sich nur einen host anpingen, ein ergebnis zu einer IP in eine synchronisierte hashtable oder ähnliches schreiben, und sich dann auflösen (oder halt den nächsten job durchführen...)
mit 32 workern sollte sich das selbst mit etwas overhead in weniger als 10 sec bewerkstelligen lassen (auch wenn die vm immernoch die meiste zeit mit warten verbringen wird ...)
__________________ Gräten auf dem Sofakissen wird man wohl entfernen müssen.
|
|
19.08.2009 22:11 |
|
|
|