推薦答案
要在Java中獲取本機的IP地址和MAC地址,可以使用java.net包中的NetworkInterface類和InetAddress類。NetworkInterface類提供了與網(wǎng)絡(luò)接口相關(guān)的信息,包括獲取MAC地址。InetAddress類提供了與IP地址相關(guān)的方法,包括獲取本機的IP地址。下面是一個示例代碼,演示如何使用Java獲取本機的IP地址和MAC地址:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class GetLocalIPAndMAC {
public static void main(String[] args) {
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
byte[] mac = networkInterface.getHardwareAddress();
if (mac != null) {
StringBuilder macAddress = new StringBuilder();
for (byte b : mac) {
macAddress.append(String.format("%02X:", b));
}
if (macAddress.length() > 0) {
macAddress.deleteCharAt(macAddress.length() - 1);
}
System.out.println("本機MAC地址: " + macAddress.toString());
}
Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().indexOf(':') == -1) {
System.out.println("本機IP地址: " + inetAddress.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
在上面的代碼中,我們首先使用getNetworkInterfaces()方法獲取本地主機上的網(wǎng)絡(luò)接口列表。然后,我們迭代每個網(wǎng)絡(luò)接口,并使用getHardwareAddress()方法獲取MAC地址。將MAC地址格式化為人類可讀的形式,并打印輸出。
接下來,我們使用getInetAddresses()方法獲取與網(wǎng)絡(luò)接口關(guān)聯(lián)的IP地址列表。我們將過濾掉回環(huán)地址和IPv6地址,并打印輸出符合條件的IP地址。
請注意,MAC地址可能不是每個網(wǎng)絡(luò)接口都可用,并且獲取MAC地址需要特定的授權(quán)和權(quán)限。此外,根據(jù)您的網(wǎng)絡(luò)配置,可能會有一些特殊情況需要考慮,例如虛擬網(wǎng)絡(luò)接口或使用特定的網(wǎng)絡(luò)接口。
其他答案
-
要在Java中獲取本機的IP地址和MAC地址,可以使用java.net包中的NetworkInterface類和InetAddress類的組合。NetworkInterface類提供了與網(wǎng)絡(luò)接口相關(guān)的信息,包括獲取MAC地址。InetAddress類提供了與IP地址相關(guān)的方法,包括獲取本機的IP地址。下面是一個示例代碼,演示如何使用Java獲取本機的IP地址和MAC地址:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class GetLocalIPAndMAC {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println("本機IP地址: " + localhost.getHostAddress());
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localhost);
if (networkInterface != null) {
byte[] mac = networkInterface.getHardwareAddress();
if (mac != null) {
StringBuilder macAddress = new StringBuilder();
for (byte b : mac) {
macAddress.append(String.format("%02X:", b));
}
if (macAddress.length() > 0) {
macAddress.deleteCharAt(macAddress.length() - 1);
}
System.out.println("本機MAC地址: " + macAddress.toString());
} else {
System.out.println("無法獲取MAC地址");
}
} else {
System.out.println("無法獲取網(wǎng)絡(luò)接口");
}
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
}
}
}
在上述代碼中,我們首先使用getLocalHost()方法獲取表示本地主機的InetAddress對象,并使用getHostAddress()方法獲取本地主機的IP地址。將IP地址打印輸出。
接下來,我們使用getByInetAddress()方法從本地主機的NetworkInterface對象獲取對應(yīng)的網(wǎng)絡(luò)接口。然后,我們使用getHardwareAddress()方法獲取MAC地址,并將其格式化為人類可讀的形式,并進行打印輸出。
需要注意的是,獲取MAC地址可能需要特定的授權(quán)和權(quán)限,并且某些網(wǎng)絡(luò)接口可能不支持獲取MAC地址。在某些情況下,可能無法獲得MAC地址,因此代碼中包含了相關(guān)的錯誤處理。
-
要在Java中獲取本機的IP地址和MAC地址,可以使用java.net包中的NetworkInterface類和InetAddress類。NetworkInterface類提供了與網(wǎng)絡(luò)接口相關(guān)的信息,包括獲取MAC地址。InetAddress類提供了與IP地址相關(guān)的方法,包括獲取本機的IP地址。下面是一個示例代碼,演示如何使用Java獲取本機的IP地址和MAC地址:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class GetLocalIPAndMAC {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println("本機IP地址: " + localhost.getHostAddress());
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
if (networkInterface.getHardwareAddress() == null) {
continue;
}
if (networkInterface.isLoopback() || networkInterface.isVirtual() || networkInterface.isPointToPoint()) {
continue;
}
byte[] mac = networkInterface.getHardwareAddress();
StringBuilder macAddress = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : ""));
}
System.out.println("本機MAC地址: " + macAddress.toString());
}
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
}
}
}
在上述代碼中,我們首先使用getLocalHost()方法獲取表示本地主機的InetAddress對象,并使用getHostAddress()方法獲取本地主機的IP地址。將IP地址打印輸出。
接下來,我們使用getNetworkInterfaces()方法獲取本地主機上的網(wǎng)絡(luò)接口列表。然后,我們迭代每個網(wǎng)絡(luò)接口,并使用getHardwareAddress()方法獲取MAC地址。我們還添加了一些篩選條件,過濾掉回環(huán)接口、虛擬接口和點對點接口。
最后,我們將MAC地址格式化為人類可讀的形式,并進行打印輸出。
需要注意的是,獲取MAC地址可能需要特定的授權(quán)和權(quán)限,并且某些網(wǎng)絡(luò)接口可能不支持獲取MAC地址。在某些情況下,可能無法獲得MAC地址,因此代碼中包含了相關(guān)的錯誤處理。