集册 Java实例教程 获取IP子网掩码

获取IP子网掩码

欢马劈雪     最近更新时间:2020-01-02 10:19:05

473
获取IP子网掩码
//来自 nowjava - 时代Java

import java.util.ArrayList;

import java.util.regex.Pattern;


public class Main{

    public static void main(String[] argv) throws Exception{

        int cidr = 2;

        System.out.println(getSubnetMask(cidr));

    }

    public static String getSubnetMask(final int cidr)

            throws InvalidIPAddressException {

        return numberToIP(getSubnetMaskNumeric(cidr));

    }

    public static String numberToIP(long addr)

            throws InvalidIPAddressException {


        if (addr < 0L || addr > 4294967295L) {

            throw new InvalidIPAddressException("Invalid IP");/*来 自 N  o w  J a v a . c o m*/

        }


        StringBuilder ip = new StringBuilder();


        ip.append((addr >> 24) & 0xFF).append(".");

        ip.append((addr >> 16) & 0xFF).append(".");

        ip.append((addr >> 8) & 0xFF).append(".");

        ip.append((addr) & 0xFF);


        return ip.toString();

    }

    public static long getSubnetMaskNumeric(final int cidr)

            throws InvalidIPAddressException {


        if (cidr > 32 || cidr < 0)

            throw new InvalidIPAddressException(

                    "CIDR can not be greater than 32");


        // starting /24 netmask, in decimal (255.255.255.0)

        long netmask = 4294967040L;


        // calculating and correcting netmask

        if (cidr > 24) {

            for (long i = cidr; i > 24; i--) {

                netmas
展开阅读全文