0
,我們正在嘗試使用Java小程序,以獲取客戶端的MAC ID獲取客戶端的MAC ID。該小程序通過html頁面加載。 如下面給出的相同的代碼:問題在使用小程序
public class mainRun extends Applet{
private static final long serialVersionUID = -4939998186435587428L;
String macAddr="";
public void paint(Graphics g)
{
try
{
System.out.println("Start");
InetAddress ip = InetAddress.getLocalHost();
System.out.println((new StringBuilder("Current IP address : "+ip.toString())));
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte mac[] = network.getHardwareAddress();
System.out.println("mac : "+mac.toString());
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for(int i = 0; i < mac.length; i++)
sb.append(String.format("%02X%s", new Object[] {
Byte.valueOf(mac[i]), i >= mac.length - 1 ? "" : "-"
}));
System.out.println(sb.toString());
macAddr=String.valueOf(sb);
}
catch(SocketException e)
{
macAddr=e.toString();
e.printStackTrace();
}
catch (Exception e) {
macAddr=e.toString();
e.printStackTrace();
}
g.drawString("HELLO: "+macAddr, 100, 100);
}
}
然而,在使用getHardwareAddress()方法,我們正在空指針異常。
什麼可能導致此問題?
此外,當我在我的本地機器上運行此同一類的Java Applet我得到所需的輸出。當Applet jar放在服務器上並且applet加載到客戶機上時,我正面臨着這個問題。
爲了什麼目的?使用Java中的MAC地址除了顯示它之外,沒有什麼用處。你知道它們可以被用戶改變嗎?那因此它們作爲唯一的系統標識符沒有用處? – EJP
是的,我知道欺騙是可能的。然而,客戶端想要(取得客戶端MAC地址)完成,他們不介意地址是否改變。我們只想獲取該地址,並將其與我們記錄中已有的地址進行比較,並授權用戶進一步使用該機器中的應用程序。 – Toral