Java 5 introduced the InetAddress
class for ICMP ping messages however its behavior is highly platform-dependent.
On Windows, the isReachable()
uses connection on TCP port 7 (echo) which gives inaccurate results both in terms of response times and actual availability.
Verax ICMP Library addresses these problems by using a 100% native approach based purely on Winsock raw sockets. It is used for implementing Windows ICMP pings in Verax NMS & APM on Windows platforms.
Verax ICMP Library for Java/Windows provides both synchronous and asynchronous APIs. The asynchronous APIs allow to issue any number of ping requests and to wait for their completion. This approach allows for the highest levels of performance & scalability, not achievable by synchronous APIs without spawning a large number of threads.
Verax ICMP Library for Java/Windows uses asynchronous waiting and high-resolution Windows timers in order to provide accurate results, far more precise than the Java's InetAddress class.
Verax ICMP Library supports Microsoft Windows XP, Vista, 7, Server 2003, Server 2008 and higher. For systems supporting UAC (User Access Control), the library requires administrator-elevated privileges to run (without them, RAW ICMP sockets cannot be created).
Tools required for compilation
Verax ICMP Library requires Oracle JRE 1.6 or higher and Microsoft Visual C++ 2003 or higher for compilation (please refer to the README file in the .zip file for details on how to compile the .jar and corresponding JNI .dll).
JavaDoc documentation and examples are provided within the library .zip file available for downloads.