簡體   English   中英

使用其他網絡的ip時,方法getHardwareAddress()給出NullPointerException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM