集册 Java实例教程 从InetAddress获取Mac地址

从InetAddress获取Mac地址

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

658
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
从InetAddress获取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.

 */

//package com.nowjava;

import java.net.InetAddress;

import java.net.NetworkInterface;
/**
 from
* 时代Java公众号 - N o w J a  v a . c o m 
**/

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 {

        System.out.println(getMacAddress());

    }
/** NowJava.com 提 供 **/

    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) {

                    macAddress = null;


                    while (hosts.hasMoreElements()) {

                        macAddress = getMacAddress(hosts.nextElement());


                        if (macAddress != null) {

        
展开阅读全文