方法getHardwareAddress()在使用其他网络的ip时给出NullPointerException

时间:2014-02-19 01:21:12

标签: java networking nullpointerexception

我正在尝试通过其IP地址打印连接到我的网络的其他计算机的物理地址。

使用arp -a我可以看到所有网络及其物理地址。

但是当运行java代码时,我无法检索它的相应ip的物理地址,它在调用NullPointerException方法的行上给了getHardwareAddress()。但如果它是我的计算机的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());

}

1 个答案:

答案 0 :(得分:2)

您只能为自己的网络接口获取NetworkInterface个对象,而不能获取其他主机的对象。请参阅Javadoc

  

用于标识本地接口

当您致电NetworkInterface.getByInetAddress(add),其中add是外国IP地址时,它会返回您未检查的null,,因此您获得NullPointerException时你用过它。

你不能这样做。