JAVA获取机器的MAC地址

需求:获取机器的mac地址

问题:一些国产操作系统获取不到MAC地址,以下搜集了一些获取mac地址的方法

1.获取MAC地址

ps:该方法在银河麒麟中可用

public static String getMAC() throws SocketException {Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();while(networkInterfaces.hasMoreElements()) {NetworkInterface network = networkInterfaces.nextElement();log.info("network:{}", network);byte[] mac = network.getHardwareAddress();if(mac == null) {log.warn("mac is null");} else {StringBuilder sb = new StringBuilder();for (int i = 0; i < mac.length; i++) {sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));}log.info("MAC address : {} ", sb);if (!"".equals(sb.toString())) {return sb.toString();}break;}}return "";}

2.获取MAC地址

在UOS系统中可用

public static List<String> getMacAddress() {ArrayList<String> macs = new ArrayList<>();try {Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();byte[] mac = null;while (allNetInterfaces.hasMoreElements()) {NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();if (netInterface.isLoopback() || netInterface.isVirtual() || netInterface.isPointToPoint() || !netInterface.isUp()) {continue;} else {mac = netInterface.getHardwareAddress();if (mac != null) {StringBuilder sb = new StringBuilder();for (int i = 0; i < mac.length; i++) {sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : ""));}if (sb.length() > 0) {macs.add(sb.toString().toLowerCase());}}}}log.info("获取的mac地址为:{}", macs);return macs;} catch (Exception e) {log.error("MAC地址获取失败", e);}return Collections.emptyList();}

3.获取Linux的MAC地址

public static List<String> getLinuxMACAddress() {List<String> macs = new ArrayList<>();BufferedReader bufferedReader = null;Process process = null;try {process = Runtime.getRuntime().exec("ifconfig -a");bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;int index = -1;while ((line = bufferedReader.readLine()) != null) {index = line.toLowerCase().indexOf("硬件地址");String mac = "";if (index != -1) {mac = line.substring(index + 4).trim();macs.add(mac.toLowerCase());}}} catch (IOException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e1) {e1.printStackTrace();}bufferedReader = null;process = null;}log.info("MAC address :{}", macs);return macs;}

4.获取windows的mac地址

public static List<String> getMACAddressByWindows() throws Exception {ArrayList<String> rs = new ArrayList<>();String result = "";Process process = Runtime.getRuntime().exec("ipconfig /all");BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));int index = -1;String line;while ((line = br.readLine()) != null) {index = line.indexOf("物理地址");if (index >= 0) {index = line.indexOf(":");if (index >= 0) {result = line.substring(index + 1).trim();}rs.add(result.toUpperCase());}}br.close();log.info("Mac address : {}",rs);return rs;}

JAVA获取机器的MAC地址相关推荐

  1. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  2. Java获取客户端的mac地址

    我是小韩,这一次和大家分享一下如何获取客户端的mac地址,在开发中,我们会遇到想进行主机安全的认证,简单一点的就是通过mac地址来认证,不是这台电脑的用户不允许登录,可以通过添加自己允许的mac进行认 ...

  3. java获取网卡的mac地址

    为了项目的安全,有时候需要得到电脑的唯一码,比如:网卡的mac地址.和大家分享一下,下面是项目中用到的工具类: import java.io.BufferedReader; import java.i ...

  4. java 获取本机mac地址并转为字符串

    2019独角兽企业重金招聘Python工程师标准>>> public  String getMacAddress() throws Exception{         InetAd ...

  5. android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)

    /** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...

  6. 第三方机构能获取我的MAC地址吗?

    有关浏览器指纹识别,我们最常被问到的问题是,我们是否可以隐藏MAC地址?对注重隐私的业务来说,这意味着什么?换一种更直接的说法--网站或第三方机构是否可以获取我的MAC地址?就这一问题,我们展开了调查 ...

  7. Android中获取手机 IMEI Mac地址 IP地址

    一.获取手机IMEI 手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IM ...

  8. Windows获取本机MAC地址方法(C语言)

    Windows获取本机MAC地址方法(C语言) 用到的方法有两种:Netbios()和GetAdaptersInfo(); Netbios 获取步骤主要分为三步: 一.枚举本机所有LAN 二.重设每个 ...

  9. 获取远程网卡MAC地址

    出自: http://blog.joycode.com/liuhuimiao/ 朋友mingal急问我有关获取远程网卡MAC地址的ASP.net实现.我一开始以为是获取本机MAC地址,说了几种方法给他 ...

最新文章

  1. 什么是raid 容错式磁盘阵列?
  2. Oracle获取月初/月末/季初/季末/半年初/半年末/年初/年末
  3. 什么是python的第三方库_python学习(十九)常见的第三方库
  4. P3746 [六省联考 2017] 组合数问题(倍增、dp)
  5. 大数据是应对安全形势的进攻武器
  6. TechWeb祝大家新年快乐!愿你心有光亮 自予光芒!
  7. c语言求浮点数矩阵的逆程序,逆矩阵求程序!!!谢谢
  8. 正式环境docker部署hyperf_HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线
  9. 美发店员工合同WORD版(可直接下载打印)【卓美业网拓软件整理】
  10. 那些到处在说靠信息差、认知差可以挣大钱的人真的能挣很多钱吗?
  11. 华为腾讯众安微众360大咖齐聚,2019中国区块链开发者大会等你来!
  12. Spark系列之Spark的资源调优
  13. 【猿团专访】| 潜心研究的云视“华山派”,关于技术研发的那些事
  14. linux软链接命令,linux ln 命令使用参数详解(ln -s 软链接)
  15. C# Windows Service入门
  16. BootStrap前端框架网页模板
  17. 全国计算机高新技术bim应用等级,BIM有等级考试吗?BIM等级考试有几种形式?
  18. DP232在兼容FT232RL的注意事项
  19. 9 静电场中的电介质
  20. 阿里云、腾讯云、UCloud和AWS的云主机测评

热门文章

  1. MySQL核心查询-排序 分组 聚合 多表查询 合并查询 子查询
  2. 开源软件为什么要有授权(License)
  3. 2021-2025年中国VCI扩散器行业市场供需与战略研究报告
  4. 微服务架构spring cloud - 分布式配置中心config(七)
  5. 华为nova7和华为p30pro有什么区别
  6. 自定义view走势图(三、贝塞尔曲线)
  7. UVa 103 - Stacking Boxes
  8. 华为服务器虚拟化 xen,KVM和xen的比较
  9. springframework(十三)spring的Dao和JDBC
  10. 浦东外服朋友阿R的时间线