`
兰丽(川)
  • 浏览: 23855 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

java获取系统消息

阅读更多
private void main(){
StringBuffer licenseXml = new StringBuffer();
    response.setContentType("text/xml");
    licenseXml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    licenseXml.append("<xml>");
    licenseXml.append("<ip>").append(
        InetAddress.getLocalHost().getHostAddress()).append("</ip>");
    licenseXml.append("<mac>").append(getMacAddress()).append("</mac>");
    licenseXml.append("<systemName>").append(System.getProperty("os.name"))
        .append("</systemName>");
    licenseXml.append("<structure>").append(System.getProperty("os.arch"))
        .append("</structure>");
    licenseXml.append("<version>").append(System.getProperty("os.version"))
        .append("</version>");
    licenseXml.append("</xml>");
}

private String getMacAddress() throws IOException {
    String os = System.getProperty("os.name");
    try {
      if (os.startsWith("Windows")) {
        return windowsParseMacAddress(windowsRunIpConfigCommand());
      } else if (os.startsWith("Linux")) {
        return linuxParseMacAddress(linuxRunIfConfigCommand());
      } else {
        throw new IOException("unknown operating system: " + os);
      }
    } catch (ParseException ex) {
      ex.printStackTrace();
      throw new IOException(ex.getMessage());
    }
  }

  /*
   * Linux stuff
   */
  private static String linuxParseMacAddress(String ipConfigResponse)
      throws ParseException {
    String localHost = null;
    try {
      localHost = InetAddress.getLocalHost().getHostAddress();
    } catch (java.net.UnknownHostException ex) {
      ex.printStackTrace();
      throw new ParseException(ex.getMessage(), 0);
    }

    StringTokenizer tokenizer = new StringTokenizer(ipConfigResponse, "\n");
    String lastMacAddress = null;

    while (tokenizer.hasMoreTokens()) {
      String line = tokenizer.nextToken().trim();
      boolean containsLocalHost = line.indexOf(localHost) >= 0;

      // see if line contains IP address
      if (containsLocalHost && lastMacAddress != null) {
        return lastMacAddress;
      }

      // see if line contains MAC address
      int macAddressPosition = line.indexOf("HWaddr");
      if (macAddressPosition <= 0)
        continue;

      String macAddressCandidate = line.substring(macAddressPosition + 6)
          .trim();
      if (linuxIsMacAddress(macAddressCandidate)) {
        lastMacAddress = macAddressCandidate;
        continue;
      }
    }

    ParseException ex = new ParseException("cannot read MAC address for "
        + localHost + " from [" + ipConfigResponse + "]", 0);
    ex.printStackTrace();
    throw ex;
  }

  private static boolean linuxIsMacAddress(String macAddressCandidate) {
    if (macAddressCandidate.length() != 17)
      return false;
    return true;
  }

  private static String linuxRunIfConfigCommand() throws IOException {

    Process p = Runtime.getRuntime().exec("ifconfig");
    InputStream stdoutStream = new BufferedInputStream(p.getInputStream());

    StringBuffer buffer = new StringBuffer();
    for (;;) {
      int c = stdoutStream.read();
      if (c == -1)
        break;
      buffer.append((char) c);
    }
    String outputText = buffer.toString();

    stdoutStream.close();

    return outputText;
  }

  private static String windowsParseMacAddress(String ipConfigResponse)
      throws ParseException {
    String localHost = null;
    try {
      localHost = InetAddress.getLocalHost().getHostAddress();
    } catch (java.net.UnknownHostException ex) {
      ex.printStackTrace();
      throw new ParseException(ex.getMessage(), 0);
    }

    StringTokenizer tokenizer = new StringTokenizer(ipConfigResponse, "\n");
    String lastMacAddress = null;

    while (tokenizer.hasMoreTokens()) {
      String line = tokenizer.nextToken().trim();
      if (line.endsWith(localHost) && lastMacAddress != null) {
        return lastMacAddress;
      }
      int macAddressPosition = line.indexOf(":");
      if (macAddressPosition <= 0)
        continue;

      String macAddressCandidate = line.substring(macAddressPosition + 1)
          .trim();
      if (windowsIsMacAddress(macAddressCandidate)) {
        lastMacAddress = macAddressCandidate;
        continue;
      }
    }

    ParseException ex = new ParseException("cannot read MAC address from ["
        + ipConfigResponse + "]", 0);
    ex.printStackTrace();
    throw ex;
  }

  private static boolean windowsIsMacAddress(String macAddressCandidate) {
    if (macAddressCandidate.length() != 17)
      return false;

    return true;
  }

  private static String windowsRunIpConfigCommand() throws IOException {
    Process p = Runtime.getRuntime().exec("ipconfig /all");
    InputStream stdoutStream = new BufferedInputStream(p.getInputStream());
    StringBuffer buffer = new StringBuffer();
    for (;;) {
      int c = stdoutStream.read();
      if (c == -1)
        break;
      buffer.append((char) c);
    }
    String outputText = buffer.toString();

    stdoutStream.close();

    return outputText;
  }
分享到:
评论

相关推荐

    Java获取系统图标方法

    Java获取系统图标方法 为Action的java文件... 使用方法:直接在img标签指定src到此Action的dispalyIcon方法 !dispalyIcon.do" width="" height=""/&gt;

    Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法.pdf

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU、内存、硬盘、进程等。下面将介绍两种获取系统信息的方法。 方法一:使用 Java ...

    java获取系统参数

    在Java编程中,获取系统参数是一项基本任务,用于了解运行Java程序的环境信息。Java提供了`java.lang.System`类的`getProperties()`方法来获取这些信息。这个方法返回一个`Properties`对象,该对象包含了关于Java...

    Java获取系统信息

    Java 获取系统信息 Java 获取系统信息是指通过 Java 语言来获取系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在 Java 中,我们可以使用多种方式来获取系统信息,如使用 Runtime 类、System 类...

    java获取操作系统版本代码

    在Java编程中,获取操作系统的版本信息是一项常见的需求,这对于平台相关的功能实现或者适配具有重要意义。本篇文章将深入探讨如何使用Java来获取操作系统的信息,包括版本、名称以及如何进行系统判断。 首先,我们...

    java获取系统信息的类文件

    在Java编程语言中,获取系统信息是常见的需求,这包括但不限于系统内存的使用...以上就是使用Java获取系统信息的主要类和方法的概述。在实际开发中,需要根据具体的需求和目标平台选择合适的方式来获取和处理这些信息。

    Java获取系统CPU、内存、硬盘等系统信息

    本文将详细探讨如何利用Java获取Windows和Linux系统的CPU、内存以及硬盘信息。 首先,让我们聚焦于CPU信息的获取。在Java中,`java.lang.management`包提供了ManagementFactory类,它包含了获取系统管理信息的方法...

    java获取当前系统信息

    在Java编程语言中,获取当前系统的详细信息是一项基础但重要的技能,它可以帮助开发者更好地理解运行环境,对于调试、日志记录以及系统兼容性检查尤为重要。本文将深入解析如何利用Java内置的`System`类和`...

    java获取系统、硬件、设备相关信息

    java 1. 使用wmic相关命令获取windows硬件相关信息。 2. 使用shell相关的dmidecode/fdisk/ifconfig命令获取Linux硬件和系统相关信息

    Java获取系统信息(cpu_内存_硬盘_进程等)的相关方法

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在实际开发中,这些信息往往是非常有用的...

    linux 下用java 获取系统信息 cpu mem jvm等

    linux 下用java 获取系统信息 cpu mem jvm等 用java调用系统命令得到,方便实用

    java获取系统安装字体

    在Java编程语言中,获取系统安装的字体是一项实用的功能,特别是在需要进行文本渲染或界面设计时。这个工具类提供了一种方法,可以遍历操作系统中安装的所有字体,并将它们的信息以编程方式返回。下面我们将详细探讨...

    java获取系统参数规格

    ### Java获取系统参数规格 #### 1. 获取Java版本 ```java System.out.println("Java版本:\n" + System.getProperty("java.version")); ``` 该命令返回当前正在运行的Java虚拟机(JVM)的主要版本号,例如`1.8.0_251...

    Java获取操作系统信息

    在Java编程语言中,获取操作系统的信息是一项常见的任务,这有助于开发者了解程序运行的环境,进行兼容性检查,或者根据不同的操作...通过实践和学习,你可以更好地掌握Java获取操作系统信息的技巧,提升你的开发能力。

    Java获得系统时间

    ### Java获取系统时间详解 在Java编程语言中,获取系统时间是一项非常基本且重要的功能,尤其是在需要记录事件发生的时间、实现定时任务或是进行日期时间相关的计算时。本文将基于提供的代码示例,深入探讨如何在...

    关于java获取操作系统信息

    在Java编程语言中,获取操作系统的信息对于环境配置、程序调试及兼容性测试等方面具有重要意义。本文将基于给定的文件信息,深入探讨如何利用Java来获取操作系统的关键信息,并对每一条命令及其返回值进行详细解释。...

    java获取系统进程方法类

    可以获得当前系统进程的一个java方法类

    Java如何获取系统cpu、内存、硬盘信息

     前段时间摸索在Java中怎么获取系统信息包括cpu、内存、硬盘信息等,刚开始使用Java自带的包进行获取,但这样获取的内存信息不够准确并且容易出现找不到相应包等错误,所以后面使用sigar插件进行获取。下面列举出...

    java准确的获取操作系统的名称

    java获取系统 os.name java系统名称 System使用 系统工具类 自己封装的Util类,功能强大,原理简单。 初学者可以下载下来进行学习。可以判断mac、linux、window等等系统。如win7,win8,win2003,linux,mac等。 如有不...

    java 获取系统时间错误,少了8小时

    在Java编程中,获取系统时间的操作通常是通过`java.util.Date`类或`java.time`包下的类来实现的。然而,标题"java 获取系统时间错误,少了8小时"表明开发者在尝试获取系统时间时遇到了一个时区问题。这通常与Java中...

Global site tag (gtag.js) - Google Analytics