Programatically die ICMP gebruikt pingelt is een grote manier om vast te stellen dat een server in gebruik is. Eerder kon u geen ping ICMP (welk ping bevel in Linux/Unix & Vensters) doet doen in Java zonder JNI of exec vraag te gebruiken. Hier is een eenvoudige en betrouwbare methode om ICMP te doen pingelt in Java zonder JNI of NIO te gebruiken.


De gastheer van het koord = 172.16.0.2
int. onderbreking = 3000; // adviseer ik 3 minstens seconden
de status van Boole = InetAddress.getByName (gastheer) .isReachable (onderbreking)

de status is waar als de machine door ping bereikbaar is; vals anders. Beste inspanning wordt geleverd proberen om de gastheer te bereiken, maar de firewalls en de serverconfiguratie kunnen verzoeken blokkeren resulterend in een onbereikbare status terwijl sommige specifieke havens toegankelijk kunnen zijn. Een typische implementatie zal De Verzoeken gebruiken van icmp- ECHO als het voorrecht kan worden verkregen, anders zal het proberen om een verbinding van TCP op haven 7 (Echo) van de bestemmingsgastheer te vestigen.

In Linux/Unix kunt u suid uitvoerbaar Java ICMP moeten krijgen pingelt het werken, zullen de Verzoeken van ECHO zelfs zonder suid fijn zijn. Nochtans op Vensters u ICMP kunt krijgen pingel zonder enige kwesties van om het even welke aard.