集册 Java实例教程 获取Mac地址列表

获取Mac地址列表

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

450
获取Mac地址列表

/* 

 * Copyright 2013 The Athena-Peacock Project.

 *

 * 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.

 *

 * Revision History

 * Author         Date            Description

 * ---------------   ----------------   ------------

 * Sang-cheon Park   2013. 7. 22.      First Draft.

 *//* 来 自 nowjava.com - 时  代  Java*/

//package com.nowjava;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Enumeration;

import java.util.LinkedHashSet;

import java.util.List;

import java.util.Set;


public class Main {

    public static void main(String[] argv) throws Exception {
    /**
    时代Java公众号 提供 
    **/

        System.out.println(getMacAddressList());

    }


    public static List<String> getMacAddressList() throws Exception {

        List<String> macAddressList = null;

        Set<String> macAddressSet = null;

        Enumeration<NetworkInterface> ifs = NetworkInterface

                .getNetworkInterfaces();


        if (ifs != null) {

            macAddressSet = new LinkedHashSet<String>();


            while (ifs.hasMoreElements()) {

                Enumeration<InetAddress> hosts = ifs.nextElement()

                        .getInetAddresses();


                if (hosts != null) {

                    String macAddress = null;


                    while (hosts.hasMoreElements()) {

                        macAddress = getMacAddress(hosts.nextElement());


                        if (macAddress != null) {

                            macAddressSet.add(macAddress);

                        }

                    }

                }

            }

        }


        if (macAddressSet == null) {

            return null;

        }


        // ?? ?? ? ?????? ????.

        macAddressList = new ArrayList<String>(macAddressSet);

        Collections.sort(macAddressList);

        Collections.reverse(macAddressList);


        return macAddressList;

    }


    public static String getMacAddress() throws Exception {

        return getMacAddress(InetAddress.getLocalHost());

    }


    public static String getMacAddress(InetAddress host) throws Exception {

        String macAddress = null;

        NetworkInterface iface = NetworkInterface.getByInetAddress(host);


        if (iface != null) {

            byte[] hardware = iface.getHardwareAddress();


            if (hardware != null && hardware.length == 6

                    && hardware[1] != (byte) 0xff) {

                StringBuilder sb = new StringBuilder();


                for (int i = 0; i < hardware.length; i++) {

                    sb.append(String.format("%02x%s", hardware[i],

                            (i < hardware.length - 1) ? ":" : ""));

                }


                macAddress = sb.toString().toLowerCase()

                        .replaceAll(":", "").replaceAll("-", "");

            }

        }


        return macAddress;

    }


    public static String getMacAddress(String name) throws Exception {

        String macAddress = null;

        List<String> macAddressList = null;

        Set<String> macAddressSet = null;

        Enumeration<NetworkInterface> ifs = NetworkInterface

                .getNetworkInterfaces();


        if (ifs != null) {

            macAddressSet = new LinkedHashSet<String>();


            NetworkInterface nifs = null;

            while (ifs.hasMoreElements()) {

                nifs = ifs.nextElement();

                Enumeration<InetAddress> hosts = nifs.getInetAddresses();


                if (hosts != null) {

                  
展开阅读全文