2009-06-23

Java : あるアドレスに到達可能かどうかをテストしたい


Java であるアドレスに到達可能かどうかをテストしたい



import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class Sample {

   public static void main(String[] args) {
       System.out.println("結果 : " + ping("www.exsample.com"));
       System.out.println("結果 : " + ping("www.google.co.jp"));
       System.out.println("結果 : " + ping("www.yahoo.co.jp"));
   }

   private static boolean ping(String host) {
       final int timeout = 5 * 1000;        // 5 秒
       InetAddress address = null;
       try {
           address = InetAddress.getByName(host);
       } catch (UnknownHostException e) {
           System.err.println(e.toString());
       }
       if (address == null) {
           return false;
       }
       System.out.println("ping : " + address.getHostName() + " [" + address.getHostAddress() + "]");
       boolean retval = false;
       try {
           retval = address.isReachable(timeout);
       } catch (IOException e) {
           System.err.println(e.toString());
       }
       return retval;
   }
}

簡単に書いたら下記の通り。
InetAddress.getByName(host).isReachable(timeout);




メモ
コマンドラインから ping を実行するとすべて true が返ってきた。
Windows で実行すると exsample は true が google、yahoo は false が返ってきた。
CentOS で実行するとすべて true が返ってきた。
※ それ以上は調べてない。



参考



環境 1
java : jdk160_05(JDev11g 付属)
OS : Windows XP Pro sp2


環境 2
java : jdk1.6.0_04
OS : CentOS 5.x

0 件のコメント:

コメントを投稿