代码如下:
package com;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class ProcessBuilderShow {
public static void main(String[] args) {
List<String> address = ProcessBuilderShow.getPhysicalAddress();
for(String add:address){
// System.out.printf("物理网卡地址:%s%n", add);
System.out.println("物理网卡地址:"+add);
}
}
//ip地址
public static String getIPAddress() throws UnknownHostException{
InetAddress addr = InetAddress.getLocalHost();
String ip=addr.getHostAddress().toString();//获得本机IP
return ip;
}
//mac物理地址
public static List<String> getPhysicalAddress(){
Process p = null;
//物理网卡列表
List<String> address = new ArrayList<String>();
try{
//执行ipconfig /all命令
p = new ProcessBuilder("ipconfig", "/all").start();
}catch (IOException e){
return address;
}
byte[] b = new byte[1024];
StringBuffer sb = new StringBuffer();
//读取进程输出值
InputStream in = p.getInputStream();
try{
while (in.read(b)>0){
sb.append(new String(b));
}
}catch (IOException e1){
}finally{
try{
in.close();
}catch (IOException e2){
}
}
//以下分析输出值,得到物理网卡
String rtValue = sb.substring(0);
int i = rtValue.indexOf(" . . . . . . . . . . . . :");
while(i>0){
rtValue = rtValue.substring(i + ". . . . . . . . . . . . . :".length());
if(!rtValue.substring(0,18).endsWith("00-00-00-00-00-00")&&!address.contains(rtValue.substring(0,18))){
if(rtValue.substring(0,18).replace(" ", "").replace("-", "").matches("^[a-zA-Z0-9]+$")){
if(rtValue.substring(0,18).replace(" ", "").replace("-", "").length() == 12){
address.add(rtValue.substring(0,18));
}
}
}
i = rtValue.indexOf(". . . . . . . . . . . . . :");
}
return address;
}
}