gpt4 book ai didi

Java-无法使用 getHardwareAddress() 获取 Ubuntu 设备的 MAC 地址

转载 作者:行者123 更新时间:2023-12-02 06:53:11 25 4
gpt4 key购买 nike

我有以下代码来提取我的 Ubuntu 设备的 MAC 地址,并且我将 MAC 地址放入数据库中。此代码在 Windows PC 中运行良好,但在 Ubuntu 设备中则不起作用。数据库字段变空。我的应用程序是一个网络应用程序。我正在获取 war 文件并将其放入我的 Ubuntu 设备中的 tomcat 服务器中。

 public static String getMACAddress()
{
StringBuffer strMac = new StringBuffer();
try {

InetAddress address = InetAddress.getLocalHost();
// InetAddress address = InetAddress.getByName("192.168.46.53");

/*
* Get NetworkInterface for the current host and then read the
* hardware address.
*/
NetworkInterface ni = NetworkInterface.getByInetAddress(address);
if (ni != null) {
byte[] mac = ni.getHardwareAddress();
if (mac != null) {
/*
* Extract each array of mac address and convert it to hexa
* with the following format 08-00-27-DC-4A-9E.
*/
for (int i = 0; i < mac.length; i++) {
System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
strMac.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "" : ""));
}
} else {
System.out.println("Address doesn't exist or is not accessible.");
}
} else {
System.out.println("Network Interface for the specified address is not found.");
}
} catch (Exception e) {

}
return strMac.toString();
}

我还引用了这个( Java - Getting MAC address of Linux system )链接。

我的 Ubuntu 设备同时使用 LAN 和 Wifi 连接。

希望我的问题很清楚。请帮忙 ...谢谢

最佳答案

这几乎是 Why does java NetworkInterface.getHardwareAddress return empty byte array on Windows? 的重复但它是相反的 Linux/Windows 所以我想我会尝试回答它。

看起来您正在地址变量中获取环回接口(interface),该变量不会注册为具有硬件地址,因为它与硬件无关。尝试确保您获得与网络硬件关联的 InetAddress。链接的线程有一个迭代列表的示例。

关于Java-无法使用 getHardwareAddress() 获取 Ubuntu 设备的 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17759097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com