2010-12-16 45 views
0

我正在使用的代碼如何確定並保存遠程用戶的MAC地址?

byte[] mac = ni.getHardwareAddress(); 
for (int i = 0; i < mac.length; i++) { 
    System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""); 

輸出:00-27-0E-C2-53-B7

我需要這個輸出將被存儲在一個變量,我需要一個查詢將其保存到一個MySQL數據庫。我也想在我的登錄頁面上自動獲取MAC地址以及用戶詳細信息。

這樣,我可以將用戶的MAC地址以及他們的用戶名和密碼存儲在數據庫中。這個想法是,當用戶登錄時,我希望能夠自動獲取MAC地址以認證用戶。

我該怎麼做?

+1

您將無法獲得客戶端的MAC地址。 – sje397 2010-12-16 11:28:20

+0

沒有問關於我的本地mac地址 – sunny 2010-12-16 11:29:24

+0

@sunny,但如果你不能驗證它,你如何使用mac地址認證用戶?請說明你正在嘗試做什麼 – 2010-12-16 11:38:46

回答

1

你在問很多問題。

  1. 您的mac地址已存儲在變量中。數組mac []是一個數組變量。如果您需要單獨的變量,請將其定義如下:

    String myMac = mac [i];

  2. 將數據保存在數據庫中。我相信你已經在使用DB了。如果你使用普通的JDBC構造insertupdate這樣的SQL語句: 插入UserData('mac')VAULUES(?)where user_id =? 很明顯,具體領域取決於你的數據庫模式。 如果您正在使用某個ORM系統,請詢問有關此ORM的更具體問題。但在大多數情況下,這會更簡單。例如,如果您已擁有班級用戶:

    class用戶{0}私人字符串用戶名; 私人字符串密碼; //等 }

...只需添加新的領域mac有: 類用戶{ 私人字符串用戶名; 私人字符串密碼; private String mac; //等 }

如果您使用的是JPA,您的數據庫模式將自動更新並且數據也將保存在那裏。

  1. 同樣是關於登錄頁面。如果您已經登錄,顯示例如用戶ID頁面,添加類似於代碼MAC

等,等....

+0

...我忘記提及,mac [i] byte [] mac = ni.getHardwareAddress(); – sunny 2010-12-16 11:55:22

0

的Python禪說:「簡單比複雜好。」

此代碼是從SO用戶Carles Barrobes

public String obtainMacAddress() throws Exception 
{ 
Process aProc = Runtime.getRuntime().exec("ipconfig /all"); 
InputStream procOut = new DataInputStream(aProc.getInputStream()); 
BufferedReader br = new BufferedReader(new InputStreamReader(procOut)); 

String aMacAddress = "((\\p{XDigit}\\p{XDigit}-){5}\\p{XDigit}\\p{XDigit})"; 
Pattern aPatternMac = Pattern.compile(aMacAddress); 
String aIpAddress = ".*IP.*: (([0-9]*\\.){3}[0-9]).*$"; 
Pattern aPatternIp = Pattern.compile(aIpAddress); 
String aNewAdaptor = "[A-Z].*$"; 
Pattern aPatternNewAdaptor = Pattern.compile(aNewAdaptor); 

// locate first MAC address that has IP address 
boolean zFoundMac = false; 
boolean zFoundIp = false; 
String foundMac = null; 
String theGoodMac = null; 

String strLine; 
while (((strLine = br.readLine()) != null) && !(zFoundIp && zFoundMac)) { 
    Matcher aMatcherNewAdaptor = aPatternNewAdaptor.matcher(strLine); 
    if (aMatcherNewAdaptor.matches()) { 
     zFoundMac = zFoundIp = false; 
    } 
    Matcher aMatcherMac = aPatternMac.matcher(strLine); 
    if (aMatcherMac.find()) { 
     foundMac = aMatcherMac.group(0); 
     zFoundMac = true; 
    } 
    Matcher aMatcherIp = aPatternIp.matcher(strLine); 
    if (aMatcherIp.matches()) { 
     zFoundIp = true; 
     if(zFoundMac && (theGoodMac == null)) theGoodMac = foundMac; 
    } 
} 

aProc.destroy(); 
aProc.waitFor(); 

return theGoodMac;} 

注意,有必要有一個以太網或WiFi連接來運行上述。

相關問題