我正在尝试通过其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());
}
答案 0 :(得分:2)
您只能为自己的网络接口获取NetworkInterface
个对象,而不能获取其他主机的对象。请参阅Javadoc:
用于标识本地接口
当您致电NetworkInterface.getByInetAddress(add)
,其中add
是外国IP地址时,它会返回您未检查的null,
,因此您获得NullPointerException
时你用过它。
你不能这样做。