`

java工具类,在Windows,Linux系统获取电脑的MAC地址、本地IP、电脑名

阅读更多

http://www.cnblogs.com/langtianya/p/6815976.html (java工具类,在Windows,Linux系统获取电脑的MAC地址、本地IP、电脑名) 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*********************************************************************************
 * //* Copyright (C) 2014 ××××××××××. All Rights Reserved. //* //* Filename:
 * ComputerInfo.java //* Revision: 1.0 //* Author: <yao xiucai> //* Created On:
 * 2014年5月21日 //* Modified by: //* Modified On: //* //* Description:
 * 
 * <取网卡物理地址--
 * 1.在Windows,Linux系统下均可用;
 * 2.通过ipconifg,ifconfig获得计算机信息;
 * 3.再用模式匹配方式查找MAC地址,与操作系统的语言无关>
 * 
 * //* Description: <取计算机名--从环境变量中取>
 * abstract 限制继承/创建实例
 */
/********************************************************************************/

public abstract class ComputerInfo {

    private static String macAddressStr = null;
    private static String computerName = System.getenv().get("COMPUTERNAME");

    private static final String[] windowsCommand = { "ipconfig", "/all" };
    private static final String[] linuxCommand = { "/sbin/ifconfig", "-a" };
    private static final Pattern macPattern = Pattern.compile(".*((:?[0-9a-f]{2}[-:]){5}[0-9a-f]{2}).*",
            Pattern.CASE_INSENSITIVE);

    /**
     * 获取多个网卡地址
     * 
     * @return
     * @throws IOException
     */
    private final static List<String> getMacAddressList() throws IOException {
        final ArrayList<String> macAddressList = new ArrayList<String>();
        final String os = System.getProperty("os.name");
        final String command[];

        if (os.startsWith("Windows")) {
            command = windowsCommand;
        } else if (os.startsWith("Linux")) {
            command = linuxCommand;
        } else {
            throw new IOException("Unknow operating system:" + os);
        }
        // 执行命令
        final Process process = Runtime.getRuntime().exec(command);

        BufferedReader bufReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        for (String line = null; (line = bufReader.readLine()) != null;) {
            Matcher matcher = macPattern.matcher(line);
            if (matcher.matches()) {
                macAddressList.add(matcher.group(1));
                // macAddressList.add(matcher.group(1).replaceAll("[-:]",
                // ""));//去掉MAC中的“-”
            }
        }

        process.destroy();
        bufReader.close();
        return macAddressList;
    }

    /**
     * 获取一个网卡地址(多个网卡时从中获取一个)
     * 
     * @return
     */
    public static String getMacAddress() {
        if (macAddressStr == null || macAddressStr.equals("")) {
            StringBuffer sb = new StringBuffer(); // 存放多个网卡地址用,目前只取一个非0000000000E0隧道的值
            try {
                List<String> macList = getMacAddressList();
                for (Iterator<String> iter = macList.iterator(); iter.hasNext();) {
                    String amac = iter.next();
                    if (!amac.equals("0000000000E0")) {
                        sb.append(amac);
                        break;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

            macAddressStr = sb.toString();

        }

        return macAddressStr;
    }

    /**
     * 获取电脑名
     * 
     * @return
     */
    public static String getComputerName() {
        if (computerName == null || computerName.equals("")) {
            computerName = System.getenv().get("COMPUTERNAME");
        }
        return computerName;
    }

    /**
     * 获取客户端IP地址
     * 
     * @return
     */
    public static String getIpAddrAndName() throws IOException {
        return InetAddress.getLocalHost().toString();
    }

    /**
     * 获取客户端IP地址
     * 
     * @return
     */
    public static String getIpAddr() throws IOException {
        return InetAddress.getLocalHost().getHostAddress().toString();
    }

    /**
     * 获取电脑唯一标识
     * 
     * @return
     */
    public static String getComputerID() {
        String id = getMacAddress();
        if (id == null || id.equals("")) {
            try {
                id = getIpAddrAndName();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return computerName;
    }

    /**
     * 限制创建实例
     */
    private ComputerInfo() {

    }

    public static void main(String[] args) throws IOException {
        System.out.println(ComputerInfo.getMacAddress());
        System.out.println(ComputerInfo.getComputerName());
        System.out.println(ComputerInfo.getIpAddr());
        System.out.println(ComputerInfo.getIpAddrAndName());
    }
}
分享到:
评论

相关推荐

    IP地址HTTP请求工具类

    获取本地IP地址,获取本地Host名称,获取Linux下的IP地址,获取用户真实IP地址,get/post请求 相应的工具类

    获取windows or unix系统下服务器MAC地址及服务器IP地址

    在IT领域,获取服务器的MAC(Media Access Control)地址和IP(Internet Protocol)地址是常见的系统管理任务。MAC地址是网络设备的物理地址,而IP地址则是网络通信中的逻辑地址。在Windows和Unix(包括Linux)系统...

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

    下面展示的是一个名为`GetMACAddress`的类,它包含了一个方法`getMACAddress`用于获取指定IP地址所对应的MAC地址。此外,还提供了一个`main`方法用于测试。 ```java import java.io.IOException; import java.io....

    通过ping方式,获取局域网所有ip,然后通过ip获取mac地址

    对于每个IP,它执行一个操作系统级的arp命令(在Windows上)来获取MAC地址。注意,这依赖于操作系统,并且可能需要根据不同的平台进行调整。 通过这种方法,我们可以得到局域网内活动设备的IP和MAC地址信息,这对于...

    获取mac地址的几种方法

    - **Java**:使用`java.net.NetworkInterface`类,遍历所有网络接口并获取MAC地址。 3. 系统管理工具 大多数操作系统都提供了图形界面的网络设置工具,用户可以在其中查看设备的MAC地址: - **Windows**:控制...

    获取主机拨号IP地址

    本文将深入探讨如何在操作系统中获取主机本地IP地址以及宽带拨号时的IP地址,主要针对的是动态分配的IP地址,因为这通常是家庭或小型办公室网络中常见的设置。 首先,我们需要了解IP地址的基本概念。IP地址...

    获取本机所有连接的IP地址

    在Windows或Linux等操作系统中,可以使用系统提供的API或者命令行工具来获取这些信息。 1. **IP地址的获取**: - 在Windows系统中,我们可以使用`GetAdaptersAddresses`函数,它属于`iphlpapi`库,这个函数可以...

    使用JAVA获取客户端MAC地址.pdf

    在这个例子中,代码使用了`nbtstat -a`命令来获取Windows系统上的MAC地址,这是基于NetBIOS over TCP/IP的查询。对于其他操作系统,例如Linux、Unix等,可能需要使用其他命令,如`ifconfig`或`ipconfig`。 以下是...

    LAN中获取主机IP,MAC,用户名等的源代码(2)

    在Java中,可能会使用`InetAddress`和`NetworkInterface`类来获取IP和MAC地址,使用`java.lang.System.getProperty("user.name")`获取用户名。 代码可能还涉及到广播或多播技术来扫描局域网内的所有设备,例如使用`...

    获取局域网IP获取局域网IP获取局域网IP

    在IT领域,获取局域网(LAN)IP地址是一项基础且重要的任务,特别是在网络编程、设备联网或系统管理中。局域网IP地址是设备在本地网络中的唯一标识,通常是一个私有IP地址,用于设备之间的通信。了解如何获取局域网...

    获取服务器mac或本机mac

    许多网络管理工具如Wireshark、 Angry IP Scanner 或者Nmap都提供了获取远程主机MAC地址的功能。这些工具通常通过发送ARP请求(Address Resolution Protocol)来获取目标IP对应的MAC地址。 ### 通过API或编程语言...

    获取网卡MAC地址

    在Java中,可以使用`java.net.NetworkInterface`类获取MAC地址: ```java import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class Main { public ...

    获取以太网卡的MAC地址

    - **Java**:使用`java.net.NetworkInterface`类,遍历所有网络接口并获取MAC地址。 - **C#**:通过`ManagementClass`和`ManagementObjectCollection`操作WMI。 3. **第三方软件**:有些系统工具或网络诊断软件也...

    JAVA获取Linux的网络信息(有重复).pdf

    本文将详细讲解如何使用Java来获取Linux的网络接口信息,包括MAC地址、IP地址、网络接口名称以及子网掩码等。 首先,我们需要了解Java中的`java.net`包,它提供了一系列类和接口,用于处理网络连接和网络相关的操作...

    获取电脑硬件的详细信息,与注册有关,物理地址,序列号

    获取MAC地址可以使用命令行(如Windows的`getmac`,Linux的`ifconfig`),或通过编程接口(如Java的`NetworkInterface`类)。 4. 电脑名称:电脑名称是操作系统中用于识别每台计算机的标识符,可以在网络环境中区分...

    Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等

    我们将主要关注一个名为"libsigar-x86-linux.so"的库文件,这是一个跨平台的系统信息获取工具——Sigar(System Information Gatherer and Reporter)的一部分。 1. **Sigar库介绍** Sigar是由Hypertable项目开发...

    VNC服务端 java客户端

    由于Java的跨平台特性,VNC Java客户端可以在任何安装了Java运行环境的设备上运行,无论是Windows、Mac还是Linux。Java客户端通过实现VNC协议,与VNC服务端建立连接,实现远程桌面的显示和操作。Java客户端可能包含...

    java开发的聊天系统

    Java的“一次编写,到处运行”特性使得聊天系统可以在多种操作系统上运行,如Windows、Linux、Mac OS等。 网络编程是实现聊天系统的关键部分。Java通过Socket编程接口提供了网络通信的能力。Socket允许两个应用程序...

    远程获取mac地址二十一圩五十二玩玩

    - **Java**: 可以使用`java.net.NetworkInterface`类获取MAC地址。 - **C#**: 利用`.NET`框架的`System.Net.NetworkInformation`命名空间获取MAC地址。 5. **网络监控软件**: - **Wireshark**: 通过捕获网络...

    SAP Java Jco3.0(win32,win64,mac64,linux64)

    - 安装时,需要将JCo的jar文件添加到Java项目的类路径中,同时确保系统路径中包含相应的动态链接库(dll文件在Windows上,dylib文件在Mac上,so文件在Linux上)。 - 配置JCo连接参数,如SAP系统的主机名、端口、...

Global site tag (gtag.js) - Google Analytics