1 19 20 package com.sslexplorer.util; 21 22 import java.util.StringTokenizer ; 23 24 26 public abstract class IPUtils { 27 28 private IPUtils() { 29 } 30 31 36 public static int[] calcNetworkNumber(int ip[], int mask[]) { 37 int ret[] = new int[4]; 38 for (int i = 0; i < 4; i++) 39 ret[i] = ip[i] & mask[i]; 40 return ret; 41 } 42 43 48 public static int[] calcLastAddress(int in[], int mask) { 49 int ret[] = new int[4]; 50 ret = calcBroadcastAddress(in, mask); 51 ret[3] = ret[3] - 1; 52 return ret; 53 } 54 55 59 public static int[] createMaskArray(int bit) { 60 int[] mask = new int[4]; 61 int rem = (bit + 1) / 8; 62 int mod = (bit + 1) % 8; 63 Integer Int = new Integer (2); 64 Integer modInt = new Integer (8 - mod); 65 double d = Math.pow(Int.doubleValue(), modInt.doubleValue()); 66 Double dd = new Double (d); 67 int i; 68 for (i = 0; i < rem; i++) 69 mask[i] = 255; 70 71 mask[i] = 256 - dd.intValue(); 72 for (i++; i < 4; i++) 73 mask[i] = 0; 74 75 return mask; 76 } 77 78 83 public static int[] calcFirstAddress(int ip[], int mask[]) { 84 int ret[] = new int[4]; 85 ret = calcNetworkNumber(ip, mask); 86 ret[3] = ret[3] + 1; 87 return ret; 88 } 89 90 95 public static int[] calcBroadcastAddress(int in[], int m) { 96 int ret[] = new int[4]; 97 Integer totalBits = new Integer (32); 98 Integer bits = new Integer (totalBits.intValue() - m - 1); 99 int mask[] = createMaskArray(m); 100 double two = 2D; 101 Double hosts = new Double (Math.pow(two, bits.doubleValue())); 102 hosts.intValue(); 103 int ffOctets = bits.intValue() / 8; 104 Integer modBits = new Integer (bits.intValue() % 8); 105 for (int i = 0; i < 4; i++) { 106 ret[i] = in[i]; 107 if (i > 4 - ffOctets - 1) 108 ret[i] = 255; 109 } 110 111 hosts = new Double (Math.pow(two, modBits.doubleValue())); 112 if (ffOctets > 0) 113 ret[4 - ffOctets - 1] = (in[4 - ffOctets - 1] + hosts.intValue()) - 1; 114 else 115 ret[3] = (mask[3] + hosts.intValue()) - 1; 116 return ret; 117 } 118 119 124 public static int getNumberOfHosts(int ip[], int m) { 125 Integer totalBits = new Integer (32); 126 Integer bits = new Integer (totalBits.intValue() - m - 1); 127 double two = 2D; 128 Double hosts = new Double (Math.pow(two, bits.doubleValue())); 129 return hosts.intValue() - 2; 130 } 131 132 136 public static String createAddressString(int[] addr) { 137 138 return addr[0] + "." + addr[1] + "." + addr[2] + "." + addr[3]; 139 } 140 141 145 public static int[] nextAddress(int[] ip) { 146 if (ip[3] == 255) { 147 ip[3] = 0; 148 if (ip[2] == 255) { 149 ip[2] = 0; 150 if (ip[1] == 255) { 151 ip[1] = 0; 152 if (ip[0] == 255) 153 return null; 154 else 155 ip[0]++; 156 } else 157 ip[1]++; 158 } else 159 ip[2]++; 160 } else 161 ip[3]++; 162 return ip; 163 } 164 165 169 public static int[] getByteAddress(String ipAddress) { 170 StringTokenizer tokens = new StringTokenizer (ipAddress, "."); 171 int[] ip = new int[4]; 172 for (int i = 0; i < ip.length; i++) { 173 if (!tokens.hasMoreTokens()) 174 throw new IllegalArgumentException ("IP address must consist of xxx.xxx.xxx.xxx"); 175 try { 176 ip[i] = Integer.parseInt(tokens.nextToken()); 177 } catch (NumberFormatException ex) { 178 throw new IllegalArgumentException ("Invalid IP address " + ipAddress); 179 } 180 } 181 return ip; 182 } 183 }
| Popular Tags
|