java 获取本地ip 、所有MAC地址

原创
2016/11/01 15:29
阅读数 93

代码如下:

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; 
	 }
	}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部