GalaxyPilot —— D.S


                  生命不熄,戰斗不止
          數據加載中……

          IP地址轉換成10進制整數(zt)

          一、由域名求IP地址的程序
          下面程序由命令行輸入域名,輸出ip

          import java.net.*;
          public class nslookup { 
          //Usage:java nslookup hostname 
          public static void main (String argv[]) throws Exception { 
            String host=argv[0]; 
            InetAddress address=null; 
            try { 
               address=InetAddress.getByName(host); 
            } catch(UnknownHostException e) { 
               System.out.println("Unknown host"); 
               System.exit(0); 
            } 
            byte[] ip=address.getAddress(); 
            for (int i=0;i< ip.length;i++) { 
                if (i>0) System.out.print("."); 
                System.out.print(ip[i]&0xff); 
            } 
             System.out.println(); 
           }
          } 
          

          程序運行結果:

          C:\java>java nslookup sina.com
          71.5.7.138

          C:\java>

          二、 得到某個域名的所有IP地址

          import java.net.*;
          import java.io.*;
          public class SimpleDNS
          {
             public static void main(String[] args)
             {
                try
                {
                   InetAddress[] address =InetAddress.getAllByName("www.sina.com");
             for(int i=0;i< address.length;i++)
             {   
             System.out.println(address[i].getHostAddress());
             }         
                }
                catch (Exception e)
                {
                      System.out.println(e.toString());
                      System.exit(1);
                 }
             }
          }
          
          ? 運行結果:
          C:\java>java SimpleDNS www.s
          218.30.13.35
          218.30.13.36
          218.30.13.37
          218.30.13.38
          218.30.13.39
          218.30.13.40
          218.30.13.41
          218.30.13.42
          218.30.13.43
          218.30.13.44
          218.30.13.45
          218.30.13.46
          218.30.13.47
          218.30.13.48
          218.30.13.49
          218.30.13.34

          三、 IP地址轉換成10進制整數
          經常要判斷一個ip是國內的還是國外的,有了下面程序再結合數據庫查詢...

          public class IP 
          {
               private static long ipToLong(String strIP)
               //將127.0.0.1 形式的IP地址轉換成10進制整數,這里沒有進行任何錯誤處理
               {
                    int j=0;
                    int i=0;
                    long [] ip=new long[4];
                    int position1=strIP.indexOf(".");
                    int position2=strIP.indexOf(".",position1+1);
                    int position3=strIP.indexOf(".",position2+1);  
                    ip[0]=Long.parseLong(strIP.substring(0,position1));
                    ip[1]=Long.parseLong(strIP.substring(position1+1,position2));
                    ip[2]=Long.parseLong(strIP.substring(position2+1,position3));
                    ip[3]=Long.parseLong(strIP.substring(position3+1));
                    return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3]; 
               }
               private static String longToIP(long longIP)
               //將10進制整數形式轉換成127.0.0.1形式的IP地址
               {
                    StringBuffer sb=new StringBuffer("");
                    sb.append(String.valueOf(longIP>>>24));//直接右移24位
                    sb.append(".");

          ??????????//將高8位置0,然后右移16位 sb.append(String.valueOf((longIP&0x00FFFFFF)>>>16)); sb.append("."); sb.append(String.valueOf((longIP&0x0000FFFF)>>>8)); sb.append("."); sb.append(String.valueOf(longIP&0x000000FF)); sb.append("."); return sb.toString(); } public static void main(String[] args) { System.out.println("IP地址的各種表現形式:\r\n"); System.out.print("32位二進制形式:"); System.out.println(Long.toBinaryString(3526601384L)); System.out.print("十進制形式:"); System.out.println(ipToLong("210.51.170.168")); System.out.print("普通形式:"); System.out.println(longToIP(3526601384L)); } }

          程序運行結果:

          IP地址的各種表現形式:

          32位二進制形式:11001010011100000110000010100011
          十進制形式:3396362403
          普通形式:202.112.96.163.

          posted on 2007-03-06 13:54 舵手 閱讀(20515) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阳泉市| 富锦市| 大同市| 略阳县| 巴楚县| 阜宁县| 津市市| 家居| 武冈市| 贵南县| 北宁市| 星座| 平乡县| 九寨沟县| 双峰县| 汝城县| 徐州市| 日喀则市| 沅江市| 民勤县| 五莲县| 中卫市| 卓资县| 防城港市| 历史| 平塘县| 阜城县| 昭觉县| 盘山县| 江阴市| 新乡市| 隆子县| 酉阳| 沿河| 福贡县| 加查县| 靖西县| 星子县| 扬州市| 高雄市| 贵定县|