前面我们运维小伙在部署的时候,发现在真实服务器获取不到mac地址或者获取不到指定类型的mac地址,写程序记录如下

  1. import com.google.common.base.Strings;
  2.  
  3. import java.net.NetworkInterface;
  4. import java.util.Enumeration;
  5.  
  6. public class MacHelper {
  7.  
  8. private static MacHelper instance;
  9.  
  10. public static MacHelper getInstance() {
  11.  
  12. if (instance == null) {
  13. synchronized (MacHelper.class) {
  14. instance = new MacHelper();
  15. }
  16. }
  17.  
  18. return instance;
  19. }
  20.  
  21. /**
  22. * 获取本地IP
  23. *
  24. * @return String
  25. */
  26. public String getFirstLocalMac() {
  27. String startName = "eth", symbol = "";
  28. return getFirstLocalMac(startName, symbol);
  29. }
  30.  
  31. /**
  32. * 获取本地IP
  33. *
  34. * @return String
  35. */
  36. public String getFirstLocalMac(String startName, String symbol) {
  37.  
  38. try {
  39.  
  40. Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
  41.  
  42. while (enumeration.hasMoreElements()) {
  43.  
  44. NetworkInterface networkInterface = enumeration.nextElement();
  45.  
  46. if (networkInterface == null) {
  47. continue;
  48. }
  49.  
  50. if (!(networkInterface.getName().equals(startName) ||
  51. networkInterface.getName().startsWith(startName))) {
  52. continue;
  53. }
  54.  
  55. //获取网卡,获取地址
  56. byte[] mac = networkInterface.getHardwareAddress();
  57.  
  58. if (mac == null || mac.length <= 0) {
  59. continue;
  60. }
  61.  
  62. StringBuilder sb = new StringBuilder();
  63.  
  64. int i = 0;
  65.  
  66. for (byte b : mac) {
  67. //字节转换为整数
  68. int temp = b & 0xff;
  69. String str = Integer.toHexString(temp);
  70.  
  71. if (!Strings.isNullOrEmpty(symbol) && i == 0) {
  72. sb.append(symbol);
  73. }
  74.  
  75. if (str.length() == 1) {
  76. sb.append("0").append(str);
  77. } else {
  78. sb.append(str);
  79. }
  80.  
  81. i++;
  82. }
  83.  
  84. return sb.toString().toLowerCase();
  85.  
  86. }
  87.  
  88. } catch (Exception e) {
  89. e.printStackTrace();
  90. }
  91.  
  92. return "";
  93. }
  94. }

  

JAVA获取指定的类型的本机MAC地址的更多相关文章

  1. C#获取外网IP、本机MAC地址及Ping的实现

    原文 获取外网IP, C#获取本机的MAC地址,C#通过编程方式实现Ping 获取外网IP地址 思路是通过WebRequest连接一些网上提供IP查询服务的网站,下载到含有你的IP的网页,然后用正则表 ...

  2. java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  3. java获取获得Timestamp类型的当前系统时间

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  4. java获取获得Timestamp类型的当前系统时间。

    java获取获得Timestamp类型的当前系统时间.   java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...

  5. Java获取本机MAC地址

    为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import java.net.InetAdd ...

  6. 【java】java获取对象属性类型、属性名称、属性值

    java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

  7. Java获取本机MAC地址[转]

    原文地址:https://www.cnblogs.com/hxsyl/p/3422191.html Java获取本机MAC地址   为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网 ...

  8. c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息

    我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存等. 首先需要引入命名空间: us ...

  9. js获取本机mac地址,IP地址,计算机名

    <!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> < ...

随机推荐

  1. Java开发环境搭建(若jdk8按默认安装后没有jre文件夹,卸载重装时选择完整安装)

    JDK下载与安装(JDK 8是主流,新版版就是增加了一些新特性) 卸载旧JDK 删除java的安装目录 删除JAVA_HOME 删除path下关于java的目录 在cmd命令行中输入java vers ...

  2. vue+node+mysql

    准备工作 安装node,这是必须的 新版node自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西.验证 ...

  3. 12.java设计模式之代理模式

    基本介绍: 代理模式(Proxy)为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能,想在 ...

  4. inotify+rsync实时同步备份nfs

    学习教程总结: 1.主机1:172.16.1.41,安装rsync并运行rsync --daemon 配置好/etc/rsyncd.conf 和密码文件rscync.password并设置chomd ...

  5. 【开源】.net微服务开发引擎Anno开源啦

    1.Anno是什么? Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.底层通讯RPC(Remote Procedure Call)采用稳定可靠经过无数成功项 ...

  6. 新建Chrome标签页,极简+自用

    [跳转GitHub] chromeNewTab 已经入坑Chrome应用开发者,可以去:[应用商店地址]直接添加使用. 使用说明 下载chrome的一个[window组策略文件],解压文件后找到(\p ...

  7. Single Depth peeling 顺序无关渲染(OIT)

    什么是顺序无关渲染 在3D渲染中,物体的渲染是按一定的顺序渲染的,这也就可能导致半透明的物体先于不透明的物体渲染,结果就是可能出现半透明物体后的物体由于深度遮挡而没有渲染出来.对于这种情况通常会先渲染 ...

  8. MQ消息中间件,面试能问些什么?

    MQ消息中间件,面试能问些什么? 为什么使用消息队列?消息队列的优点和缺点? kafka.activemq.rabbitmq.rocketmq都有什么优缺点? 面试官角度分析: (1)你知不知道你们系 ...

  9. 兄弟萌,这份SpringMVC框架学习笔记真的建议反复看,写的太细了

    概述 是Spring为展现层提供的基于MVC设计理念的Web框架,通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口 支持REST风格的URL请求 采用松散耦合的可插拔组件结构,比 ...

  10. A:与指定数字相同的数的个数

    总时间限制:  1000ms 内存限制:  65536kB 描述 输出一个整数序列中与指定数字相同的数的个数. 输入 输入包含三行:第一行为N,表示整数序列的长度(N <= 100):第二行为N ...