2010-12-16 6 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

+0

ローカルMACアドレスについて質問していません – sunny

+0

@sunnyしかし、確認できないときにMacアドレスを使ってユーザーを認証したいのですか?あなたがしようとしていることを明確にしてください –

答えて

1

多くの質問があります。

  1. あなたのMACアドレスはすでに変数に格納されています。配列mac []は配列変数です。別の変数が必要な場合は、次のように定義してください:

    文字列myMac = mac [i];

  2. DBにデータを保存します。あなたは既にDBを使っていると思います。 exampelの場合、プレーンJDBC構造体を使用している場合insertまたはupdate SQLステートメントは次のようになります。 Insert UserData( 'mac')VAULUES(?)where user_id =?具体的なフィールドは、明らかにDBスキーマによって異なります。 一部のORMシステムを使用している場合は、このORMに関するさらに具体的な質問をしてください。しかし、ほとんどの場合、これはさらに簡単になります。たとえば、クラスがすでにある場合は、ユーザー:

    クラスユーザー{ プライベート文字列ユーザー名; プライベート文字列パスワード。 //など }

...ちょうどそこに新しいフィールドmac追加: クラスユーザー{ プライベート文字列のユーザ名を、 プライベート文字列パスワード。 プライベートString mac; // etc }

JPAを使用している場合、DBスキーマは自動的に更新され、データもそこに保存されます。

  1. ログインページについても同様です。すでに例のユーザーIDの表示するページにログインしている場合は、MAC
  2. ために同様のコードを追加します

などなど....

+0

...私はそのことを言及することを忘れて[私]バイト[]マック= ni.getHardwareAddress(); – sunny

0

のPythonの禅「シンプルが複雑よりも優れています。」と言います

このコードは、SOユーザCarles Barrobesからのものである:上記を実行するイーサネットまたはWiFi接続を有することが必要である

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;} 

留意されたいです。

関連する問題