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

本文介绍了一个Java程序,该程序能够获取本机的IP地址和MAC地址。通过调用特定的方法,程序可以执行ipconfig /all命令来解析并获取物理网卡的MAC地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:

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; 
	 }
	}

转载于:https://my.oschina.net/yongqingfan/blog/779214

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值