我正在使用代码
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地址以对用户进行身份验证。
我该怎么做?
答案 0 :(得分:1)
你问了很多问题。
您的Mac地址已存储在变量中。 Array mac []是一个数组变量。如果您需要单独的变量,请按以下方式定义:
String myMac = mac [i];
在数据库中保存数据。我相信你已经在使用DB了。例如,对于exampel,您使用的是纯JDBC构造insert
或update
SQL语句,如下所示:
插入UserData('mac')VAULUES(?)其中user_id =?
显然,具体字段取决于您的数据库架构。
如果您正在使用某个ORM系统,请询问有关此ORM的更具体问题。但在大多数情况下,这将更简单。例如,如果您已经有类User:
类用户{ 私有String用户名; 私有字符串密码; //等 }
...只需在其中添加新字段mac
:
class User {
私有String用户名;
私有字符串密码;
私有String mac;
//等
}
如果您使用JPA,您的数据库架构将自动更新,数据也将保存在那里。
答案 1 :(得分: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连接才能运行上述内容。