Как проверить диапазон 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
Другие вопросы по тегам