3.4.1 Wie kann ich einen Ping in Java realisieren?
Eigentlich gar nicht. Ein Ping (ICMP) ist eine hardwarenahe Angelegenheit, die im Gegensatz zu dem hardwarefernen abstrahierenden Konzept von Java steht. Die Antworten einer Netzwerkkarte sind da nicht so sehr relevant, wie ein im Netzwerk vorhandener Dienst. So kann zum Beispiel ein Rechner auf Pings nicht antworten und trotzdem einen Dienst anbieten. Oder die Pings verenden an einer Firewall oder aber der Rechner auf dem das Programm laeuft, ist gar nicht in der Lage, zu pingen. Das bedeutet, es ist sicherer und besser, einfach eine Testweise Socketverbindung zu der betreffenden Zieladresse aufzubauen und eine evtl. auftretende Exception als Zeichen fuer dessen Abwesenheit im Netz zu deuten.
Folgendes Beispiel soll dies zeigen:
import java.io.*; import java.net.*; .. static Socket nntpsock; // Der Socket fuer die Newsverbindung static BufferedReader in; static OutputStreamWriter out; ... try { nntpsock = new Socket("news.cis.dfn.de", 119); // Verbinden nntpsock.setSoTimeout(300); // Timeout auf 300ms in = new BufferedReader( new InputStreamReader(nntpsock.getInputStream())); out = new OutputStreamWriter(nntpsock.getOutputStream()); } catch (UnknownHostException e) { System.err.println("Unknown Host.:" + e.toString()); } catch (IOException e) { System.err.println("Rechner nicht erreichbar. :" + e.toString()); } ...
Autor: Stephan Menzel
Zurück zu "3.4 [NET] Netzwerk"