2013-06-18 45 views
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加載到客戶機上時,我正面臨着這個問題。

+0

爲了什麼目的?使用Java中的MAC地址除了顯示它之外,沒有什麼用處。你知道它們可以被用戶改變嗎?那因此它們作爲唯一的系統標識符沒有用處? – EJP

+0

是的,我知道欺騙是可能的。然而,客戶端想要(取得客戶端MAC地址)完成,他們不介意地址是否改變。我們只想獲取該地址,並將其與我們記錄中已有的地址進行比較,並授權用戶進一步使用該機器中的應用程序。 – Toral

回答