Solved

Get all ips with a given range

Posted on 2003-12-11
2
340 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
base64 decode encode 12 121
JavaScript/Java - Changing an image background color 4 56
stackato and cloud 4 73
Error in @AspectJ Based AOP with Spring 2 0
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…
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
The viewer will learn how to implement Singleton Design Pattern in Java.

920 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now