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 舵手 閱讀(20517) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 黄山市| 舞阳县| 石城县| 秭归县| 淮滨县| 岢岚县| 朔州市| 永州市| 丹棱县| 虎林市| 登封市| 荔浦县| 英德市| 阳城县| 永城市| 卢龙县| 石狮市| 定远县| 赤城县| 白沙| 萨迦县| 湄潭县| 淮滨县| 友谊县| 裕民县| 三台县| 阜南县| 祁连县| 嘉禾县| 蒙城县| 景谷| 应城市| 海兴县| 海阳市| 定边县| 孟连| 西城区| 平邑县| 剑川县| 尼木县| 英吉沙县|