[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Get all ips with a given range

Posted on 2003-12-11
2
Medium Priority
?
348 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 400 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

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

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

Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
Suggested Courses
Course of the Month17 days, 22 hours left to enroll

830 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