java가 맥 주소를 가져오는 두 가지 방법 (추천)

1985 단어 java얻다mac주소
나는 인터넷에서 맥 주소를 얻는 방법을 찾았고, 비교적 같지 않은 두 가지 방법을 찾았다.
제1종

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();
}
이런 방법은 본 컴퓨터의 맥 주소만 찾을 수 있는 것 같다.
제2종

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 형식으로 바꾸어야 한다는 것을 기억하십시오. 그렇지 않으면 읽은 데이터가 혼란스러워서 뒤에 진행할 수 없습니다. 그리고 필드를 식별하는 데 일부는'MACaddress'일 수 있기 때문에 스스로 조정해야 할 수도 있습니다.
다음은 여러분께 가져온 자바가 맥 주소를 얻는 두 가지 방법(추천)의 전부입니다. 많은 응원 부탁드립니다~

좋은 웹페이지 즐겨찾기