当前位置: 首页 > 知识库问答 >
问题:

如何获取机器的mac地址

周奇
2023-03-14

我想要得到机器的MAC地址..但下面写的代码只显示MAC地址时,互联网连接到我的机器,否则它将返回空...我用的是Windows7

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

class test
{
    public static void main(String[] args)
    {
        InetAddress ip;
        try {
            ip = InetAddress.getLocalHost();

            System.out.println("The mac Address of this machine is :" + ip.getHostAddress());

            NetworkInterface network = NetworkInterface.getByInetAddress(ip);

            byte[] mac = network.getHardwareAddress();

            System.out.print("The mac address is : ");

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < mac.length; i++){
                sb.append(String.format("%02X%s", mac[i],(i< mac.length - 1)?"-":""));
            }

            System.out.println(sb.toString());

        } 
        catch (UnknownHostException e) {
            e.printStackTrace();
        } 
        catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

共有1个答案

冯峻
2023-03-14

试试看它应该可以在Linux和windows中工作

public static void main(String[] args) {

    String command = "/sbin/ifconfig";

    String sOsName = System.getProperty("os.name");
    if (sOsName.startsWith("Windows")) {
        command = "ipconfig";
    } else {

        if ((sOsName.startsWith("Linux")) || (sOsName.startsWith("Mac"))
                || (sOsName.startsWith("HP-UX"))) {
            command = "/sbin/ifconfig";
        } else {
            System.out.println("The current operating system '" + sOsName
                    + "' is not supported.");
        }
    }

    Pattern p = Pattern
            .compile("([a-fA-F0-9]{1,2}(-|:)){5}[a-fA-F0-9]{1,2}");
    try {
        Process pa = Runtime.getRuntime().exec(command);
        pa.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                pa.getInputStream()));

        String line;
        Matcher m;
        while ((line = reader.readLine()) != null) {

            m = p.matcher(line);

            if (!m.find())
                continue;
            line = m.group();
            break;

        }
        System.out.println(line);
    } catch (Exception e) {
        e.printStackTrace();
    }

}
 类似资料:
  • 本文向大家介绍iOS如何获取手机的Mac地址,包括了iOS如何获取手机的Mac地址的使用技巧和注意事项,需要的朋友参考一下 首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:00:00。 官方文档上这样写的: "Twolow-level network

  • 在虚拟机环境中,我可以使用sigar来获取虚拟机的mac地址,但是如何获取主机的地址呢?

  • 问题内容: 我知道您可以使用Java 6来做到这一点。但是我要部署的环境仅限于Java 5。 有谁知道如何在Java 5或更早版本中执行此操作?非常感谢。 问题答案: Java 5中的标准方法是启动一个本机进程来运行ipconfig或ifconfig解析OutputStream以获得您的答案。 例如:

  • 本文向大家介绍Android手机获取Mac地址的方法,包括了Android手机获取Mac地址的方法的使用技巧和注意事项,需要的朋友参考一下 最常用的方法,通过WiFiManager获取: 这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00” 根据本地IP获取: 这个方法Android 7.0及其以下版本都可以获取到。 根据网络接口获取: 注

  • 问题内容: 我正在使用Ubuntu。如何使用C程序获取本机或接口eth0的MAC地址。 问题答案: 您需要遍历计算机上所有可用的接口,并与标志一起使用以获取mac地址。mac地址将以6字节的二进制数组形式获取。您还希望跳过环回接口。

  • 问题内容: 我需要一种跨平台的方法来在运行时确定计算机的MAC地址。对于Windows,可以使用“ wmi”模块,在Linux下,我能找到的唯一方法是运行ifconfig并在其输出中运行正则表达式。我不喜欢使用只能在一个OS上运行的程序包,而且更不用说容易出错的语法解析另一个程序的输出。 有谁知道跨平台方法(Windows和Linux)方法来获取MAC地址?如果没有,还有谁比我上面列出的方法更优雅