| Scan IP range |
|
|
|
| Written by Charles | |||||
| Saturday, 18 July 2009 10:50 | |||||
|
For a programming language that was built from the start to be network-oriented, Java is fairly light on networking support in its libraries. Often, IP addresses are better treated in their 'real' nature, as numbers, rather than as strings. Here's how to scan (in Java version 5 and above) a range of IP addresses to see which machines are up. The code can be found HERE
import java.net.InetAddress; public class ScanNet { public static void main(String[] args) throws Exception { int[] bounds = ScanNet.rangeFromCidr("192.168.1.255/24"); for (int i = bounds[0]; i <= bounds[1]; i++) { String address = InetRange.intToIp(i); InetAddress ip = InetAddress.getByName(address); if (ip.isReachable(100)) { // Try for one tenth of a second System.out.printf("Address %s is reachable\n", ip); } } } public static int[] rangeFromCidr(String cidrIp) { int maskStub = 1 << 31; String[] atoms = cidrIp.split("/"); int mask = Integer.parseInt(atoms[1]); System.out.println(mask); int[] result = new int[2]; result[0] = InetRange.ipToInt(atoms[0]) & (maskStub >> (mask - 1)); // lower bound result[1] = InetRange.ipToInt(atoms[0]); // upper bound System.out.println(InetRange.intToIp(result[0])); System.out.println(InetRange.intToIp(result[1])); return result; } static class InetRange { public static int ipToInt(String ipAddress) { try { byte[] bytes = InetAddress.getByName(ipAddress).getAddress(); int octet1 = (bytes[0] & 0xFF) << 24; int octet2 = (bytes[1] & 0xFF) << 16; int octet3 = (bytes[2] & 0xFF) << 8; int octet4 = bytes[3] & 0xFF; int address = octet1 | octet2 | octet3 | octet4; return address; } catch (Exception e) { e.printStackTrace(); return 0; } } 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(); } } }
Only registered users can write comments!
Powered by !JoomlaComment 3.26
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
|||||
| Last Updated ( Saturday, 18 July 2009 11:01 ) |



