博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取本机的mac地址
阅读量:6317 次
发布时间:2019-06-22

本文共 7849 字,大约阅读时间需要 26 分钟。

hot3.png

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;//import org.slf4j.Logger;//import org.slf4j.LoggerFactory;/** * 用户:LX * 创建时间: 2017/7/17. 10:00 * 地点:广州 * 目的:获取客户端mac地址 * 结果: */public class MacUtils {//    private static final Logger log = LoggerFactory.getLogger(MacUtil.class);    /**     * 获取当前操作系统名称. return 操作系统名称 例如:windows,Linux,Unix等.     */    public static String getOSName() {        return System.getProperty("os.name").toLowerCase();    }    /**     * 获取Unix网卡的mac地址.     *     * @return mac地址     */    public static String getUnixMACAddress() {        String mac = null;        BufferedReader bufferedReader = null;        Process process = null;        try {            /**             * Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息             */            process = Runtime.getRuntime().exec("ifconfig eth0");            bufferedReader = new BufferedReader(new InputStreamReader(                    process.getInputStream()));            String line = null;            int index = -1;            while ((line = bufferedReader.readLine()) != null) {                /**                 * 寻找标示字符串[hwaddr]                 */                index = line.toLowerCase().indexOf("hwaddr");                /**                 * 找到了                 */                if (index != -1) {                    /**                     * 取出mac地址并去除2边空格                     */                    mac = line.substring(index + "hwaddr".length() + 1).trim();                    break;                }            }        } catch (IOException e) {//            if (log.isErrorEnabled()) {//                log.error(e.getMessage(), e);//            }        } finally {            try {                if (bufferedReader != null) {                    bufferedReader.close();                }            } catch (IOException e1) {                e1.printStackTrace();            }            bufferedReader = null;            process = null;        }        return mac;    }    /**     * 获取Linux网卡的mac地址.     *     * @return mac地址     */    public static String getLinuxMACAddress() {        String mac = null;        BufferedReader bufferedReader = null;        Process process = null;        try {            /**             * linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息             */            process = Runtime.getRuntime().exec("ifconfig eth0");            bufferedReader = new BufferedReader(new InputStreamReader(                    process.getInputStream()));            String line = null;            int index = -1;            while ((line = bufferedReader.readLine()) != null) {                index = line.toLowerCase().indexOf("硬件地址");                /**                 * 找到了                 */                if (index != -1) {                    /**                     * 取出mac地址并去除2边空格                     */                    mac = line.substring(index + 4).trim();                    break;                }            }        } catch (IOException e) {//            if (log.isErrorEnabled()) {//                log.error(e.getMessage(), e);//            }        } finally {            try {                if (bufferedReader != null) {                    bufferedReader.close();                }            } catch (IOException e1) {                e1.printStackTrace();            }            bufferedReader = null;            process = null;        }        return mac;    }    /**     * 获取widnows网卡的mac地址.     *     * @return mac地址     */    public static String getWindowsMACAddress() {        String mac = null;        BufferedReader bufferedReader = null;        Process process = null;        try {            /**             * windows下的命令,显示信息中包含有mac地址信息             */            process = Runtime.getRuntime().exec("ipconfig /all");            bufferedReader = new BufferedReader(new InputStreamReader(                    process.getInputStream(), "GBK")); // windows系统都是GBK编码,不加GBK读出的中文是乱码            String line = null;            int index = -1;            while ((line = bufferedReader.readLine()) != null) {                /**                 * 寻找标示字符串[physical address]                 */                index = line.toLowerCase().indexOf("physical address");                if (index == -1) {                    /**                     * 寻找标示字符串[物理地址]                     */                    index = line.toLowerCase().indexOf("物理地址");                }                if (index != -1) {                    index = line.indexOf(":");                    if (index != -1) {                        /**                         * 取出mac地址并去除2边空格                         */                        mac = line.substring(index + 1).trim();                    }                    break;                }            }        } catch (IOException e) {//            if (log.isErrorEnabled()) {//                log.error(e.getMessage(), e);//            }        } finally {            try {                if (bufferedReader != null) {                    bufferedReader.close();                }            } catch (IOException e1) {                e1.printStackTrace();            }            bufferedReader = null;            process = null;        }        return mac;    }    /**     * 获取widnows网卡的mac地址.     *     * @return mac地址     */    public static String getWindowsMACAddress(String ip) {        String mac = null;        BufferedReader bufferedReader = null;        Process process = null;        try {            /**             * windows下的命令,显示信息中包含有mac地址信息             */            // process = Runtime.getRuntime().exec("ipconfig /all");            process = Runtime.getRuntime().exec("nbtstat -A " + ip);            bufferedReader = new BufferedReader(new InputStreamReader(                    process.getInputStream(), "GBK")); // windows系统都是GBK编码,不加GBK读出的中文是乱码            String line = null;            int index = -1;            while ((line = bufferedReader.readLine()) != null) {                /**                 * 寻找标示字符串[physical address]                 */                index = line.toLowerCase().indexOf("mac 地址 =");                if (index != -1) {                    index = line.indexOf("=");                    if (index != -1) {                        /**                         * 取出mac地址并去除2边空格                         */                        mac = line.substring(index + 1).trim();                    }                    break;                }            }        } catch (IOException e) {//            if (log.isErrorEnabled()) {//                log.error(e.getMessage(), e);//            }        } finally {            try {                if (bufferedReader != null) {                    bufferedReader.close();                }            } catch (IOException e1) {                e1.printStackTrace();            }            bufferedReader = null;            process = null;        }        return mac;    }    /**     * 获取客户端mac     *     * @description {TODO}     * @return     */    public static String getMACAddress(String ip) {        String os = getOSName();        String mac = "";        if (os.startsWith("windows")) {            mac = getWindowsMACAddress(ip);        } else if (os.startsWith("linux")) {            mac = getLinuxMACAddress();        } else {            mac = getUnixMACAddress();        }        return mac;    }    /**     * 测试用的main方法.     *     * @param argc     *            运行参数.     */    public static void main(String[] argc) {        String os = getOSName();        if (os.startsWith("windows")) {            String mac = getWindowsMACAddress();            System.out.println(mac);        } else if (os.startsWith("linux")) {            String mac = getLinuxMACAddress();        } else {            String mac = getUnixMACAddress();        }    }}

 

转载于:https://my.oschina.net/sprouting/blog/1438785

你可能感兴趣的文章
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
初识闭包
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
AOP动态代理
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
软件需求分析的重要性
查看>>
UVA465:Overflow
查看>>
HTML5-placeholder属性
查看>>
poj 2187:Beauty Contest(旋转卡壳)
查看>>
《Flask Web开发》里的坑
查看>>
Python-库安装
查看>>
Git笔记
查看>>
普通人如何从平庸到优秀,在到卓越
查看>>