程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java 獲得mac地址的兩種辦法(推舉)

java 獲得mac地址的兩種辦法(推舉)

編輯:關於JAVA

java 獲得mac地址的兩種辦法(推舉)。本站提示廣大學習愛好者:(java 獲得mac地址的兩種辦法(推舉))文章只能為提供參考,不一定能成為您想要的結果。以下是java 獲得mac地址的兩種辦法(推舉)正文


我在網上找了一下獲得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 {
// 取得收集接口對象(即網卡),並獲得mac地址,mac地址存在於一個byte數組中。
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轉化為正整數
String s = Integer.toHexString(mac[i] & 0xFF);
sb.append(s.length() == 1 ? 0 + s : s);
}

// 把字符串一切小寫字母改成年夜寫成為正軌的mac地址並前往
return sb.toString().toUpperCase();
}

這類辦法貌似是只能取本機的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;
}

這類辦法是我比擬愛好的,不外這類辦法呢在時光效力上能夠會稍差一些。這個外面有一個比擬須要留意的點就是數據流那邊記得要改成gbk格局的,否則讀出來的數據是亂碼的,前面就會沒法停止了,然後辨認字段那邊,能夠有一些會是"MAC address",所以能夠須要本身做一些調劑。

以上就是小編為年夜家帶來的java 獲得mac地址的兩種辦法(推舉)全體內容了,願望年夜家多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved