`
yunfuby1
  • 浏览: 10537 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

java 不同操作系统获取MAC地址方法详解

阅读更多

public class ReadMacAdrss
{
  public static final boolean isWindows = System.getProperty("os.name")
    .startsWith("Win");

  public static final boolean isLinux = System.getProperty("os.name").equals(
    "Linux");

  public static final boolean isAIX = System.getProperty("os.name").equals(
    "AIX");

  public static final boolean isSolaris = (System.getProperty("os.name")
    .equals("Solaris")) || 
    (System.getProperty("os.name").equals("SunOS"));

  public static final boolean isHPUX = System.getProperty("os.name").equals(
    "HP-UX");
  public static final String WindowsCmd = "cmd.exe /c ipconfig/all";
  public static final String LinuxCmd = "ifconfig -a";
  public static final String AIXCmd = "netstat -ia";
  public static final String SolarisCmd = "/sbin/ifconfig -a";
  public static final String HPUXCmd = "/usr/sbin/lanscan";
  private String mPhysicalAddress = "";

  private int mPhysicalMacNumber = 0;

  private boolean isInit = false;

  public void init()
  {
    try
    {
      Process process = Runtime.getRuntime().exec(getMacCommand());
      BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream()));
      Pattern macPattern = Pattern.compile(getRegStr());
      String line;
      while ((line = bufferedReader.readLine()) != null) {
        if ("".equals(line))
          continue;
        Matcher macMatcher = macPattern.matcher(line);
        boolean result = macMatcher.find();
        if (result) {
          this.mPhysicalMacNumber += 1;
          String mac = macMatcher.group(0);
          mac = mac.replace(':', '-');
          if (isHPUX)
          {
            mac = dealMac(mac);
          }
          if ("".equals(this.mPhysicalAddress)) {
            this.mPhysicalAddress = mac;
          }
          else
          {
            ReadMac tmp139_138 = this; tmp139_138.mPhysicalAddress = tmp139_138.mPhysicalAddress + "," + mac;
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    this.isInit = true;
  }

  public String getMacCommand()
  {
    if (isWindows) {
      return "cmd.exe /c ipconfig/all";
    }
    if (isLinux) {
      return "ifconfig -a";
    }
    if (isAIX) {
      return "netstat -ia";
    }
    if (isSolaris) {
      return "/sbin/ifconfig -a";
    }
    if (isHPUX) {
      return "/usr/sbin/lanscan";
    }
    return "";
  }

  public String getRegStr()
  {
    if (isWindows) {
      return "([0-9A-Fa-f]{2})(-[0-9A-Fa-f]{2}){5}";
    }
    if (isLinux) {
      return "([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2}){5}";
    }
    if (isAIX) {
      return "([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2}){5}";
    }
    if (isSolaris) {
      return "([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2}){5}";
    }
    if (isHPUX)
    {
      return "0x[0-9a-zA-Z]{12}";
    }
    return "";
  }

  public String getPhysicalAddress()
  {
    if (this.isInit) {
      return this.mPhysicalAddress;
    }
    return "Mac is not init.";
  }

  public int getPhysicalMacNumber() {
    if (this.isInit) {
      return this.mPhysicalMacNumber;
    }
    System.out.println("Mac is not init.");
    return 0;
  }

  public String dealMac(String mac)
  {
    mac = mac.substring(2);
    StringBuffer sAdd = new StringBuffer();
    for (int i = 0; i < 12; ++i) {
      sAdd.append(mac.charAt(i));
      if (i % 2 == 1) {
        sAdd.append("-");
      }
    }
    return sAdd.substring(0, sAdd.length() - 1);
  }

分享到:
评论

相关推荐

    用java实现获取MAC地址的方法

    - 创建`GetMACAddress`实例,并调用`getMACAddress`方法获取指定IP地址的MAC地址。 - 输出获取到的MAC地址。 #### 注意事项 1. **平台兼容性**: - 上述代码依赖于Windows系统的`nbtstat`命令,因此仅适用于...

    Java获取系统信息

    在Java开发中,有时我们需要获取运行时系统的相关信息,比如IP地址、网卡地址、操作系统账户以及操作系统版本等。这些信息对于日志记录、故障排查和环境配置等方面都有着重要的作用。本文将详细介绍如何通过Java代码...

    Java 获取本机的IP与MAC地址实现详解

    在Java编程中,获取本机的IP地址和MAC地址是常见的网络编程需求。这些信息对于网络通信、设备识别以及安全验证等场景尤为重要。本文将详细解释如何使用Java来获取本机的IP地址和MAC地址,并分析相关代码实现。 首先...

    在Java中获取系统属性

    ### 在Java中获取系统属性详解 #### 一、引言 在Java开发中,了解如何获取和使用系统属性是非常重要的。这些系统属性包含了与运行环境相关的各种信息,比如操作系统名称、用户目录等,这对于开发跨平台的应用程序...

    获取本地主机的MAC地址.txt

    - **获取MAC地址方法**:`getMACAddress` 方法通过执行外部命令 `ipconfig /all` 来获取网络配置信息,并从中提取出MAC地址。 - **处理命令行输出**:`getCmdStr` 方法接收命令行输出的字符串,查找包含“Physical ...

    基于Java的电子地图系统源代码

    在Java技术栈的支持下,电子地图系统具备良好的跨平台性,可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。下面我们将深入探讨该系统的几个关键知识点。 1. **Java基础** - **Java SE**:Java标准版...

    java 餐饮管理系统

    在餐饮管理系统中,Java的跨平台优势使得系统能在多种操作系统上运行,如Windows、Linux或Mac OS等。同时,Java强大的类库支持和丰富的开源社区资源为系统的开发提供了便利。 二、餐桌管理模块 餐桌管理是系统的...

    java操作Excel_详解

    ### Java操作Excel详解:jExcelAPI与POI的对比及应用实例 在IT领域,特别是企业级应用开发中,处理电子表格数据是一项常见的需求。Java作为企业级开发的主流语言之一,提供了多种库来实现这一功能,其中最知名的莫...

    Java中的目录操作详解.pdf

    不同的操作系统上,目录路径的表示方式可能会有所不同。例如,Windows系统使用反斜杠(\)作为路径分隔符,而Linux和Mac系统使用正斜杠(/)。 2. 异常处理:在进行目录操作时,需要注意异常处理。由于目录操作可能...

    java书店系统前台及后台

    《Java书店系统:前端与后台实现详解》 在信息技术领域,构建一个完善的书店系统是将线上购书体验与后台管理紧密结合的重要实践。本系统以Java为核心编程语言,结合Servlet技术处理HTTP请求,辅以数据库存储数据,...

    java版植物资源管理系统

    在Java编程语言的支持下,该系统具备了良好的跨平台特性,可以在多种操作系统环境下运行,如Windows、Linux和Mac OS等。Java的面向对象特性和丰富的类库使得系统设计更加灵活,易于维护和扩展。此外,Java的异常处理...

    JAVA图书管理系统

    首先,JAVA作为一种高级编程语言,其“一次编写,到处运行”的特性使得JAVA图书管理系统能够在各种操作系统上运行,包括Windows、Linux和Mac OS等,大大提高了系统的兼容性和可移植性。JAVA的类库丰富,为开发提供了...

    Java学籍管理系统

    系统采用Java作为主要开发语言,这得益于Java的跨平台特性,使得该系统能在多种操作系统上运行,如Windows、Linux、Mac OS等。数据库方面,本系统选择了Access,它是微软公司提供的轻量级数据库管理系统,适用于小型...

    java 3D搭建环境详解附doc

    - 操作系统:支持Windows、Mac OS X和Linux等主流操作系统。 - Java开发环境:安装JDK(Java Development Kit),至少版本1.5或更高。 - 构建工具:如果你打算进行项目开发,推荐安装一个集成开发环境(IDE),如...

    java会议室管理系统

    首先,Java作为系统的基础,具有跨平台的优势,使得该系统可以在多种操作系统上运行,如Windows、Linux或Mac OS。Java的"Write Once, Run Anywhere"理念,确保了系统的广泛适用性。同时,Java的垃圾回收机制和内存...

    苹果雪豹操作系统(Mac_OS_X)安装教程

    ### 苹果雪豹操作系统(Mac OS X)安装教程 #### 重要知识点: - **操作系统兼容性**:苹果操作系统(Mac OS X)专为苹果硬件设计,官方仅支持在苹果设备上运行。若要在非苹果硬件(即PC)上安装,则需要通过一系列...

    jsp中获取地址的写法

    1. **`getUserAgent()`**:通过 `request.getHeader("User-Agent")` 可以获取到客户端浏览器发送的 User-Agent 字符串,从中可以解析出浏览器名称和操作系统类型等信息。 ```java String agent = request....

    java系统框架源码和.exe文件

    .exe文件通常是在Windows操作系统上运行的可执行程序,这意味着这些Java框架已经被转换为可以在非Java环境中运行的格式。” 【知识点详解】: 1. **Java编程语言**:Java是一种跨平台的面向对象的编程语言,它以其...

    JAVA大学评教系统

    在大学评教系统的场景下,JAVA可以确保数据处理的安全性,同时提供稳定的运行环境,无论是在Windows、Linux还是Mac OS等操作系统上都能运行无阻。 该系统的架构设计通常包括前端界面、后端服务器以及数据库三大部分...

Global site tag (gtag.js) - Google Analytics