`
vucko
  • 浏览: 15245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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;
	}
}
分享到:
评论
Global site tag (gtag.js) - Google Analytics