java中Ip地址的各種校驗和轉化

/** 校驗Ip格式 這是模仿js校驗ip格式,使用java做的判斷    
        * @param str    
        * @return    
        */

publicboolean checkIp(String str)    
       {    
               String[] ipValue = str.split("\\.");    
if (ipValue.length != 4)    
               {    
returnfalse;    
               }    
for (int i = 0; i < ipValue.length; i++)    
               {    
                       String temp = ipValue[i];    
try
                       {    
// java判斷字串是否整數可以用此類型轉換異常捕獲方法,也可以用正則 var regu = /^\d+$/;        
                               Integer q = Integer.valueOf(ipValue[i]);    
if (q > 255)    
                               {    
returnfalse;    
                               }    
                       }    
catch (Exception e)    
                       {    
returnfalse;    
                       }    
               }    
returntrue;    
       }    


/** 校驗Ip地址是否合法
   * @param addr
   * @return
   */

publicstaticboolean isIpValid(String addr)
 {
   String[] ipStr = new String[4];
int[] ipb = newint[4];
   StringTokenizer tokenizer = new StringTokenizer(addr, ".");
int len = tokenizer.countTokens();

if (len != 4)
   {
returnfalse;
   }
try
   {
int i = 0;
while (tokenizer.hasMoreTokens())
     {
       ipStr[i] = tokenizer.nextToken();
       ipb[i] = (new Integer(ipStr[i])).intValue();

if (ipb[i] < 0 || ipb[i] > 255)
       {
returnfalse;
       }
       i++;
     }
if (ipb[0] > 0)
     {
returntrue;
     }
   }
catch (Exception e)
   {

   }
returnfalse;
 }


/** 將byte[4] 數組轉換成int 型
   * @param b
   * @param len
   * @return
   */

publicstaticint byteToInt(byte[] b, int len)
 {
finalint LOWBYTE = 0x000000ff;
int i;
if (len < 1 || len > 4)
   {
     len = 4;
   }
int[] temp = newint[len];
for (i = 0; i < len; i++)
   {
     temp[i] = (int) b[i];
     temp[i] &= LOWBYTE;
     temp[i] <<= ((len - 1 - i) * 8);
   }
for (i = 1; i < len; i++)
   {
     temp[0] |= temp[i];
   }
return temp[0];
 }

/** 將ip地址從String轉換成Int型
   * @param addr
   * @return
   */

publicstaticint covtAddrToInt(String addr)
 {
try
   {
     InetAddress ip = InetAddress.getByName(addr);
byte[] ipb = newbyte[4];
     ipb = ip.getAddress();
int tIp = byteToInt(ipb, 4);
return tIp;
   }
catch (java.net.UnknownHostException e)
   {
return 0;
   }
 }
/** 將ip地址從int型轉換成String
   * @param ip
   * @return
   */

publicstatic String covtAddrToStr(int ip)
 {
if (ip == 0)
   {
returnnew String("0.0.0.0");
   }
long newIp;
if (ip < 0)
   {
     newIp = ((long) 256) * ((long) 256) * ((long) 256) * ((long) 256);
     newIp = newIp + ip;
   }
else
   {
     newIp = (long) ip;
   }
long yushu = newIp % 256;
   newIp = newIp / 256;
   String tmpIp = Long.toString(yushu);
for (int i = 0; i < 3; i++)
   {
     yushu = newIp % 256;
     newIp = newIp / 256;
     tmpIp = Long.toString(yushu) + "." + tmpIp;

   }
return tmpIp;
 }

/**
   * 優化輸入的Ip值,如將"01.02.03.04"轉化爲"1.2.3.4";    
   * 注:此方法僅提供優化,不提供校驗,請使用合法的Ip格式字串調用
   *    
   * @param oldIpStr    將被優化的ip值    
   *                                    必須確保傳過來的Ip值已經符合Ip格式規範
   * @return 返回轉化後的Ip值
   */

public String suitableIp(String oldIpStr)
 {
   String newIp = "";
// 分離爲數組
   String[] tmpStr = oldIpStr.split("\\.");
for (int i = 0; i < tmpStr.length; i++)
   {
     newIp += Integer.valueOf(tmpStr[i]);

if (i < tmpStr.length - 1)
     {
       newIp += ".";
     }
   }
return newIp;
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章