Java的IP地址分析工具

原创 2016年08月30日 14:58:06
package cn.GloomyH.NetTools;


import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * @author GloomyH
 */
public class IPv4Analyse {
public static void main(String []args){
IPv4Analyse analyse = new IPv4Analyse();
String ip = "23.1.11.2";
int a = 5;
System.out.println(analyse.IncludeIp("127.0.0.1-127.0.255.255", "127.0.23.1"));
}
/**
     * 判断IP地址是否在该网络
     * @return
     */
public boolean IPIsInNetwork(String subnetMask,String IP){
if( null != subnetMask && subnetMask.contains("/")){
return false;
}
String subNet = subnetMask.split("/")[0];
String subMask = subnetMask.split("/")[1];
Long tm_IP = (new Long(subNet))&(0xFFFFFFFF >>>(new Long(subMask)));
if(_IPStrToLong(IP)<_IPStrToLong(subNet) && _IPStrToLong(IP)> tm_IP){
return false;
}
return true;
}

/**
* IP从String类型转换为Long
* @param IP
* @return
*/
private long _IPStrToLong(String IP){
String IPPart[] = IP.split(".");
long result =0l;
int sub = 24;
for(String ip : IPPart){
result+=(new Long(ip)<<sub);
sub-=8;
}
return result;
}

/**
* 判断IP地址是否合法
* @param IPStr 127.0.0.1/24 | 127.0.0.1
* @return
*/
public boolean isIP(String IPStr){
if(null==IPStr || IPStr.length() < 7 || IPStr.length() > 18 )
     {
       return false;
     }
if(IPStr.indexOf("/")>0){
int mask = Integer.parseInt(IPStr.split("/")[1]);
if(mask <0 || mask >32){return false;}
IPStr = IPStr.split("/")[0];
}


String regex = "^(25[0-5]|[2][0-4]\\d|[0-1]?\\d?\\d)(\\.([25][0-5]|[2][0-4]\\d|[0-1]?\\d?\\d)){3}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(IPStr);
if(!matcher.find()){
return false;
}
return true;
}

/**
* 子网掩码转换String->Int
* @param mask
* @return
*/
public int maskStrToInt(String maskStr){
int mask = 0;
String tm[] = maskStr.split("\\.");
for(String t : tm){
if("255".equals(t)){
mask += 8;
}else{
String str =IntToBin(Integer.parseInt(t));
mask += str.indexOf("0");
return mask;
}
}
return mask;
}

/**
* 十进制转换为二进制
* @param num
* @return
*/
public String IntToBin(int num){
if(0==num){
return "00000000";
}
StringBuffer sb = new StringBuffer();
while(num>0){
sb.append(num%2);
num/=2;
}
return sb.reverse().toString();
}

/**
* 判断IP是否在子网内
* @param subIP 127.0.0.0/24
* @param IP 127.0.0.1
* @return
*/
public boolean isNetworkIP(String subIP,String IP){
Integer mask = 32-Integer.parseInt(subIP.split("/")[1]);
if((IPStrToLong(IP)>>mask)<<mask == IPStrToLong(subIP.split("/")[0])){
return true;
}
return false;


/**
* 判断ip是否在一个IP范围内容
* @param ip_pool 127.0.0.1-127.0.0.255
* @param ip 127.0.0.1
* @return
*/
public boolean IncludeIp(String ip_pool, String ip) {
if(null != ip_pool || null !=ip){
if(IPStrToLong(ip)>IPStrToLong(ip_pool.split("-")[0]) && IPStrToLong(ip)<IPStrToLong(ip_pool.split("-")[1])){
return true;
}
}
return false;
}

/**
* IP地址从String->Long
* @param IP 127.0.0.1
* @return
*/
public Long IPStrToLong(String IP){
String IPPart[] = IP.split("\\.");
long result = 0l;
int t = 24;
for(String ip :IPPart){
result+=(Long.parseLong(ip)<<t);
t-=8;
}
return result;
}

/**
* IP地址从Long->String
* @param IP
* @return
*/
public String IPLongToStr(Long IP){
StringBuffer sb =new StringBuffer();
sb.append((IP&0xFF000000)>>24);
sb.append(".");
sb.append((IP&0x00FF0000)>>16);
sb.append(".");
sb.append((IP&0x0000FF00)>>8);
sb.append(".");
sb.append(IP&0x000000FF);
return sb.toString();
}
}

java获取IP地址工具类

  • 2016年03月31日 11:43
  • 5KB
  • 下载

java通过ip获取mac地址的工具

  • 2013年03月27日 15:36
  • 4KB
  • 下载

ip格式判断、地址段分析、掩码计算工具类

package com.cjh.ip.utils; import java.util.HashMap; import java.util.Map; import java.util.regex.Pa...

ip地址分析工具

  • 2011年12月19日 17:55
  • 2.96MB
  • 下载

java ip 地址分析

  • 2009年06月30日 21:20
  • 5.08MB
  • 下载

Android通过使用jtds.jar这个工具访问指定IP地址电脑上的sqlserver2008 数据库

Android只能访问应用内的SQLite ?       NO,No。  通过g

android获取本地的ip地址工具类

android获取本地的ip地址工具类,帮你轻松获取本地ip;

android常用工具类 获取本机ip地址

public interface Enumeration实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。 连续调用 nextElement 方法将返回一系列的连续元素 ...

获取客户端IP和MAC地址工具类

import java.io.InputStreamReader; import java.io.LineNumberReader; import java.net.InetAddress; impo...

工具(七):获取访问用户的客户端IP地址

很多时候,我们需要获取访问客户端的ip地址,用来分析用户的一些数据,如访问地区的各类统计等等。现在我们来看下获取方式吧: package com.wdy.tools.utils; import j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java的IP地址分析工具
举报原因:
原因补充:

(最多只允许输入30个字)