0

私はコードを使用しています

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 アドレスを自動的に取得してユーザーを認証できるようにすることです。

これどうやってするの?

4

2 に答える 2

1

あなたはたくさんの質問をしています。

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

    文字列myMac=mac [i];

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

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

...そこに新しいフィールドを追加するだけですmac:class User {private String username; プライベート文字列パスワード。プライベート文字列マック; //など}

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

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

などなど...

于 2010-12-16T11:44:06.863 に答える
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;}

上記を実行するには、イーサネットまたは Wi-Fi 接続が必要であることに注意してください。

于 2011-01-18T11:10:09.183 に答える