Solved

Get all ips with a given range

Posted on 2003-12-11
2
342 Views
Last Modified: 2007-12-19
I am a newbie so please be patient.  I have an IP range in which I would like to find all possible IPs within that range.  Also I'd like to be able to compare ip values in order to see which has a higher number.  I have not been able to find a class that enables me to do such.  Anyone know of anything?
0
Comment
Question by:tsr50
  • 2
2 Comments
 
LVL 86

Accepted Solution

by:
CEHJ earned 100 total points
ID: 9923124
You're welcome to use this to convert between numbers and ip addresses, from which you can construct a range:

import java.net.InetAddress;

public class InetRange {

  public static void main(String[] args) {
    long ip = InetRange.ipToLong(args[0]);
    System.out.println(ip);
    System.out.println(longToIp(ip));
  }


  public static String longToIp(long ipAddress) {
     StringBuffer sb = new StringBuffer(15);
     long octetMask = 0xFF;
     long octet1 = (ipAddress >> 24) & octetMask;
     long octet2 = (ipAddress >> 16) & octetMask;
     long octet3 = (ipAddress >>  8) & octetMask;
     long octet4 = (ipAddress >>  0) & octetMask;
     sb.append(octet1).append('.');
     sb.append(octet2).append('.');
     sb.append(octet3).append('.');
     sb.append(octet4);
     return sb.toString();
  }


  public static long ipToLong(String ipAddress) {
      long result = 0;
      try {
           byte[] bytes = InetAddress.getByName(ipAddress).getAddress();
           long octet1 = bytes[0] & 0xFF;
           octet1 <<= 24;
           long octet2 = bytes[1] & 0xFF;
           octet2 <<= 16;
           long octet3 = bytes[2] & 0xFF;
           octet3 <<= 8;
           long octet4 = bytes[3] & 0xFF;
           result = octet1 | octet2 | octet3 | octet4;
      }
      catch(Exception e) {
           e.printStackTrace();
           return 0;
      }
      return result;
  }




  public static String intToIp(int ipAddress) {
    int octet1 = (ipAddress & 0xFF000000) >> 24;
    int octet2 = (ipAddress & 0xFF0000) >> 16;
    int octet3 = (ipAddress & 0xFF00) >> 8;
    int octet4 = ipAddress & 0xFF;
    return new StringBuffer().append(octet1)
                             .append('.')
                             .append(octet2)
                             .append('.')
                             .append(octet3)
                             .append('.')
                             .append(octet4)
                             .toString();
  }

}

0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9930242
8-)
0

Featured Post

ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
split53 challenge 7 97
JDeveloper 12c for 32 bit 4 84
Should localization be done inside spring controller 5 26
login jsp example 24 50
For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question