ip地址处理方式

/**
*
*/


/**
* @author Administrator
*
*/
public class test {

//String ipList[];

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String ipString = "192.168.2.11";
String endipString = "192.168.3.1";
String stepIpString = "0.0.1.0";
int count = 10;
System.out.println("按起始地址:\n");
//String[] ipList=GetIPList(ipString, endipString);
System.out.println("按步长地址:\n");
String[] IpList = GetIPListByStep(ipString, stepIpString, count);
// long convertip = convertIP(ipString);
// System.out.println("convertIp = " + convertip);

}

/**
* 把形如127.0.0.1的IP地址转换成一个long值
*
* @param ipAddress
* String
* @return long
*/
private static long convertIP(String ipAddress) {
long rtn = 0;
String[] ss = ipAddress.split("\\.");
for (int i = 0; i < ss.length; i++) {
rtn <<= 8;
rtn += Long.parseLong(ss[i]);
}
for (int i = ss.length; i < 4; i++) {
rtn <<= 8;
}
return rtn;
}

/*
* 按给定步长求ip地址组;
*/
private static String[] GetIPListByStep(String beginip, String stepIP, int count) {
try {
long long_beginip = Long.MIN_VALUE;
long long_stepip;
// 转换成long值
long_beginip = convertIP(beginip);
long_stepip = convertIP(stepIP);

// 求解范围之内的IP地址
long[] long_ip = new long[count];
long ip = long_beginip;
long_ip[0] = long_beginip;
for (int k = 1; k < count; k++) {
ip = ip - long_stepip;
long_ip[k] = ip;
}
// 转换成字符串
String[] strip = new String[4];
String[] ipList = new String[long_ip.length];
for (int m = 0; m < long_ip.length; m++) {
strip[0] = String.valueOf(long_ip[m] & 0x00000000000000ff);
strip[1] = String.valueOf(long_ip[m] >> 8 & 0x00000000000000ff);
strip[2] = String
.valueOf(long_ip[m] >> 16 & 0x00000000000000ff);
strip[3] = String
.valueOf(long_ip[m] >> 24 & 0x00000000000000ff);
ipList[m] = strip[3] + "." + strip[2] + "." + strip[1] + "."
+ strip[0];
System.out.println("m = "+ m+ ":ip = "+ipList[m]);
}
return ipList;

} catch (Exception exp) {
exp.printStackTrace();
}
return null;
}

/*
* 求ip地址
*/
private static String[] GetIPList(String beginip, String endip) {
try {
long long_beginip = Long.MIN_VALUE;
long long_endip = Long.MIN_VALUE;
// 转换成long值
long_beginip = convertIP(beginip);
long_endip = convertIP(endip);

// 求解范围之内的IP地址
long[] long_ip = new long[(int) Math.abs(long_beginip - long_endip) + 1];
for (int k = 0; k <= Math.abs(long_beginip - long_endip); k++) {
if (long_beginip - long_endip < 0) {
long_ip[k] = long_beginip + (long) k;
} else {
long_ip[k] = long_endip + (long) k;
}
}

// 转换成字符串
String[] strip = new String[4];
String[] ipList = new String[long_ip.length];
for (int m = 0; m < long_ip.length; m++) {
strip[0] = String.valueOf(long_ip[m] & 0x00000000000000ff);
strip[1] = String.valueOf(long_ip[m] >> 8 & 0x00000000000000ff);
strip[2] = String
.valueOf(long_ip[m] >> 16 & 0x00000000000000ff);
strip[3] = String
.valueOf(long_ip[m] >> 24 & 0x00000000000000ff);
ipList[m] = strip[3] + "." + strip[2] + "." + strip[1] + "."
+ strip[0];
System.out.println("m = "+ m+ ":ip = "+ipList[m]);
}
return ipList;

} catch (Exception exp) {
exp.printStackTrace();
}
return null;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值