[英]Method getHardwareAddress() gives NullPointerException when using other network's ip
我正在嘗試通過其IP地址打印連接到我的網絡的其他計算機的物理地址。
使用arp -a
可以看到所有網絡及其物理地址。
但是,當運行Java代碼時,我無法檢索其對應ip的物理地址,並且在調用getHardwareAddress()
方法的行上給了我NullPointerException
。 但是,如果它是我計算機的ip,它將給出正確的輸出,並且不會引發異常。
這就是我所擁有的。
public void printMacAddress() throws UnknownHostException, SocketException {
String ipAddress = "192.168.0.105";
byte[] mac = null;
InetAddress add = InetAddress.getByName(ipAddress);
NetworkInterface network = NetworkInterface.getByInetAddress(add);
mac = network.getHardwareAddress();
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.print("The mac address is : ");
System.out.println(sb.toString());
}
您只能獲取自己網絡接口的NetworkInterface
對象,而不能獲取其他主機的接口。 參見Javadoc :
用於識別本地接口
當您調用NetworkInterface.getByInetAddress(add)
,其中add
是一個外部IP地址,因此它將返回null,
您沒有檢查),因此在使用它時會收到NullPointerException
。
你做不到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.