Как я могу определить и сохранить MAC-адрес удаленного пользователя? - PullRequest
0 голосов
/ 16 декабря 2010

Я использую код

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-адрес для аутентификации пользователя.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Вы задаете много вопросов.

  1. Ваш MAC-адрес уже сохранен в переменной.Массив mac [] является переменной массива.Если вам нужна отдельная переменная, просто определите ее следующим образом:

    String myMac = mac [i];

  2. Сохранение данных в БД.Я считаю, что вы уже используете БД.Например, если вы используете простую конструкцию JDBC insert или update SQL-оператор, например: вставьте в UserData ('mac') VAULUES (?) Где user_id =?Очевидно, что конкретные поля зависят от вашей схемы БД.Если вы используете какую-либо систему ORM, задайте более конкретный вопрос об этой ORM.Но в большинстве случаев это будет еще проще.Если, например, у вас уже есть класс User:

    class User {private String username;приватный строковый пароль;// etc}

... просто добавьте туда новое поле mac: class User {private String username;приватный строковый пароль;приватный String mac;// etc}

Если вы используете JPA, ваша схема БД будет обновлена ​​автоматически и данные также будут сохранены там.

  1. То же самое относится и к странице входа.Если у вас уже есть страница входа, которая показывает, например, идентификатор пользователя, добавьте аналогичный код для MAC

и т. Д. И т. Д. *

0 голосов
/ 18 января 2011

Дзен 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;}

Обратите внимание, что для работы с вышесказанным необходимо иметь подключение к сети Ethernet или Wi-Fi.

...