集册 Java实例教程 从IP和掩码计算网络地址

从IP和掩码计算网络地址

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

373
从IP和掩码计算网络地址

/**

 * Copyright 2009-2011 ?cole de technologie sup?rieure,

 * Communication Research Centre Canada,

 * Inocybe Technologies Inc. and 6837247 CANADA Inc.

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 * http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

//package com.nowjava;
/** from 
时代Java公众号**/

import java.net.InetAddress;


public class Main {

    /**

     * Compute network address from IP and mask

     * @param ip

     * @param mask

     * @return

     */

    public static String computeNetworkAddress(InetAddress ip,

            InetAddress mask) {

        int addr = InetAddressToInt(ip);

        int maskInt = InetAddressToInt(mask);

        return IpToString(addr & maskInt);

    }


    /** Convert ip to an integer

     * @param ip InetAddress to convert

     * @return Integer

     */

    public static int InetAddressToInt(InetAddress ip) {

        if (ip == null)

            return -1;

        byte[] adr = ip.getAddress();


        int[] i = new int[4];

        for (int j = 0; j < 4; j++) {/** nowjava.com 提供 **/

            i[j] = (int) ((adr[j] < 0) ? (256 + adr[j]) : adr[j]);

        }

        return i[3] + (i[2] << 8) + (i[1] << 16) + (i[0] << 24);

    }


    /**

     * Convert an IP address stored in an int to its string representation.

     * @param address

     * @return

     */

    public static String IpToString(
展开阅读全文