Как проверить диапазон IP-адресов, относится ли он к классу A, классу B, классу C
import java.net.*;
import java.io.*;
public class ip_host {
public static void main(String args[]) throws Exception {
System.out.println("Enter the host name :");
String n = new DataInputStream(System.in).readLine();
InetAddress ipadd = InetAddress.getByName(n);
System.out.println("IP address :" + ipadd);
}
}
У меня есть эта программа, которая находит IP-адрес, но я хочу расширить его, чтобы найти и класс IP.
2 ответа
Вы можете сделать это вручную, извлекая первый триплет адреса и проверяя соответствующие диапазоны.
InetAddress address = InetAddress.getByName(host);
String firstTriplet = address.getHostAddress().
substring(0,address.getHostAddress().indexOf('.'));
if (Integer.parseInt(firstTriplet) < 128) {
System.out.println("Class A IP");
} else if (Integer.parseInt(firstTriplet) < 192) {
System.out.println("Class B IP");
} else {
System.out.println("Class C IP");
}
РЕДАКТИРОВАТЬ: фиксированные классы
Вы можете преобразовать его в байт [], а затем проверить старший байт:
byte[] address = ipadd.getAddress();
int highest = address[0] & 0xFF;
if (highest >= 0 && highest < 128) // class A
else if (highest < 192) // class B
else if (highest < 224) // class C