2012年12月11日 星期二

簡易nslookup

在命令列輸入主機名稱,印出IP位址
輸入IP位址,印出主機名稱

import java.net.*;
import java.io.*;

public class NsLookUp{
    public static void main(String[] args){
        if(args.length > 0){
            for(int i = 0; i < args.length; i++){
                System.out.println(lookup(args[i]));
            }
        }
    }
 
    public static String lookup(String host){
        InetAddress address;
  
        try{
            address = InetAddress.getByName(host);
        }
        catch(UnknownHostException ex){
            return "Cannot find" + host;
        }
  
        if(isHostName(host)){//host name
            return address.getHostAddress();
        }
        else{ //IP address
            return address.getHostName();
        }
    }
 
    public static boolean isHostName(String host){
        //IPv6
        if(host.indexOf(':') != -1) return false;
  
        char[] ch = host.toCharArray();
        for(int i = 0; i < ch.length; i++){
            if(!Character.isDigit(ch[i])){
                //host name
                if(ch[i] != '.') return true;
            }
        }
  
        //不是host name就是IP
        return false;
    }
}


參考資料:Java網路程式設計 第三版(歐萊禮出版) 第六章範例

沒有留言:

張貼留言