java 獲取mac地址的兩種方法(推薦)
我在網(wǎng)上找了一下獲取mac地址的方法,找了兩種比較不太一樣的方法。
第一種
public static void main(String[] args) throws Exception {
InetAddress ia = InetAddress.getLocalHost();
System.out.println(getMACAddress(ia));
}
private static String getMACAddress(InetAddress ia) throws Exception {
// 獲得網(wǎng)絡(luò)接口對(duì)象(即網(wǎng)卡),并得到mac地址,mac地址存在于一個(gè)byte數(shù)組中。
byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
// 下面代碼是把mac地址拼裝成String
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// mac[i] & 0xFF 是為了把byte轉(zhuǎn)化為正整數(shù)
String s = Integer.toHexString(mac[i] & 0xFF);
sb.append(s.length() == 1 ? 0 + s : s);
}
// 把字符串所有小寫字母改為大寫成為正規(guī)的mac地址并返回
return sb.toString().toUpperCase();
}
這種方法貌似是只能取本機(jī)的mac地址的。
第二種
public static void main(String[] args) throws Exception {
getMac("192.168.1.186");
}
public static String getMac(String ip){
String str = null;
String mac = null;
try{
Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader ir = new InputStreamReader(p.getInputStream(),"gbk");
LineNumberReader input = new LineNumberReader(ir);
for (; true;) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC 地址") > 1) {
mac = str.substring(str.indexOf("MAC 地址") + 9);
break;
}
}
}
System.out.println(mac);
}catch(IOException e){
e.printStackTrace();
}
return mac;
}
這種方法是我比較喜歡的,不過這種方法呢在時(shí)間效率上可能會(huì)稍差一些。這個(gè)里面有一個(gè)比較需要注意的點(diǎn)就是數(shù)據(jù)流那里記得要改成gbk格式的,不然讀出來的數(shù)據(jù)是亂碼的,后面就會(huì)無法進(jìn)行了,然后識(shí)別字段那里,可能有一些會(huì)是"MAC address",所以可能需要自己做一些調(diào)整。
以上就是小編為大家?guī)淼膉ava 獲取mac地址的兩種方法(推薦)全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
Java設(shè)計(jì)模式模板方法模式(Template)用法解析
這篇文章主要介紹了Java設(shè)計(jì)模式模板方法模式(Template)用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
java學(xué)習(xí)筆記_關(guān)于字符串概述
下面小編就為大家?guī)硪黄猨ava學(xué)習(xí)筆記_關(guān)于字符串概述。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Java線程實(shí)現(xiàn)時(shí)間動(dòng)態(tài)顯示
這篇文章主要為大家詳細(xì)介紹了Java線程實(shí)現(xiàn)時(shí)間動(dòng)態(tài)顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
Java如何實(shí)現(xiàn)簡單后臺(tái)訪問并獲取IP
這篇文章主要介紹了Java如何實(shí)現(xiàn)簡單后臺(tái)訪問并獲取IP,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
解決IDEA項(xiàng)目project包目錄消失的問題
這篇文章主要介紹了解決IDEA項(xiàng)目project包目錄消失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
java 記錄一個(gè)子串在整串中出現(xiàn)的次數(shù)實(shí)例
今天小編就為大家分享一篇java 記錄一個(gè)子串在整串中出現(xiàn)的次數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
SpringMVC中的@ControllerAdvice使用場景詳解
這篇文章主要介紹了SpringMVC中的@ControllerAdvice使用場景詳解,在Spring?MVC進(jìn)行調(diào)用的過程中,會(huì)有很多的特殊的需求,比如全局異常,分頁信息和分頁搜索條件,請(qǐng)求時(shí)帶來返回時(shí)還得回顯頁面,需要的朋友可以參考下2024-01-01

