定义一个方法,有两个参数,一起始IP,一结束IP。
输出这两个IP之间的全部IP
谢了

解决方案 »

  1.   

    1最简单的,就是做4个循环,分别代表之间的数字
    2 把IP转化为 long, 然后在2个long之间循环。
      

  2.   

    一段把IP转化为long的代码
      public static long ipToLong(String ip) {
        String[] parts = StrTools.split(ip, ".");
        if (parts.length != 4) {
          return -1;
        }
        long rtn = 0;
        try {
          for (String part : parts) {
            rtn <<= 8;
            rtn += Integer.parseInt(part.trim());
          }
          return rtn;
        } catch (Exception ex) {
          ex.printStackTrace();
          return -1;
        }
      }反向的你自己写吧!来源: http://www.java2000.net/viewthread.jsp?tid=44
      

  3.   

    还是用第一种吧,第二种还得把long再转回去
      

  4.   


    import java.net.InetAddress;
    import java.net.UnknownHostException;public class IpPrinter { public static void main(String[] args) {
    byte[] ips = {(byte)192, (byte)168, (byte)0, (byte)1};  //起始IP
    byte[] ipe = {(byte)192, (byte)168, (byte)3, (byte)16};  //终止IP long is = ((0xFFL & ips[0]) << 24) | ((0xFFL & ips[1]) << 16) | ((0xFFL & ips[2]) << 8) | (0xFFL & ips[3]);
    long ie = ((0xFFL & ipe[0]) << 24) | ((0xFFL & ipe[1]) << 16) | ((0xFFL & ipe[2]) << 8) | (0xFFL & ipe[3]); byte[] ipt = new byte[4];
    for (long i = is; i <= ie; i++) {
    ipt[0] = (byte) ((i & 0xFFFFFFFFL) >>> 24);
    ipt[1] = (byte) ((i & 0xFFFFFFL) >>> 16);
    ipt[2] = (byte) ((i & 0xFFFFL) >>> 8);
    ipt[3] = (byte) (i & 0xFFL);
    try {
    InetAddress ia = InetAddress.getByAddress(ipt);
    System.out.println(ia.getHostAddress());
    } catch (UnknownHostException e) {
    e.printStackTrace();
    }
    }
    }

    }