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。例如,如果您使用普通的 JDBC 构造insertupdateSQL 语句,例如:插入 UserData ('mac') VAULUES (?) where user_id=? 显然,具体字段取决于您的数据库模式。如果您正在使用一些 ORM 系统,请询问有关此 ORM 的更具体问题。但在大多数情况下,这会更简单。例如,如果您已经有用户类:

    类用户{私人字符串用户名;私人字符串密码;// ETC }

...只需在此处添加新字段mac: class User { private String username; 私人字符串密码;私有字符串 mac;// ETC }

如果您使用 JPA,您的数据库架构将自动更新,并且数据也将保存在那里。

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

请注意,必须有以太网或 wifi 连接才能运行上述内容。

于 2011-01-18T11:10:09.183 回答