●javaで正引き、逆引き、ping

JDK 1.4以上(pingは5.0以上)

正引き、逆引き、pingがjavaだけで行えます。
pingはJDK5.0以上から対応です。
また、DNS,NIS,hostsファイルなど、いずれのサービスで解決されるかは実行を行う環境に依存します。

実現には
java.net.InetAddress
を使用します。

以下がサンプルです。(例外処理は省略しています。サンプルのためにgoogle.co.jpのホストとアドレスを使用させていただいております。)

正引き

InetAddress inetAddress = InetAddress.getByName( "www.google.co.jp" );
byte[] address = inetAddress.getAddress();
// byte[] での表現
System.out.format( "%d.%d.%d.%d" , Integer.valueOf( address[ 0 ] & 0xff ) , Integer.valueOf( address[ 1 ] & 0xff ) , Integer.valueOf( address[ 2 ] & 0xff ) , Integer.valueOf( address[ 3 ] & 0xff ) ).println();
// 文字列での表現
System.out.println( inetAddress.getHostAddress() );

逆引き(逆引きは引けないものや結果に注意してください。)

InetAddress inetAddress = InetAddress.getByName( "66.249.89.99" ); // google.co.jp
System.out.println( inetAddress.getHostName() );
System.out.println( inetAddress.getCanonicalHostName() );

ping(pingを許可しないホストなどがあることにも注意してください。)

// IPやホスト名などからInetAddressを取得します。
InetAddress inetAddress = InetAddress.getByName( "192.168.0.1" );
// isReachableメソッドでpingが実現できます。引数はタイムアウトで単位はミリ秒。
boolean reached = inetAddress.isReachable( 1000 );
System.out.println( reached );