java获取本机网卡的MAC地址

转载 2011年01月07日 16:44:00

下面列出了java读取MAC地址的工具方法,可以读取windows和非windows操作系统(linux,unix)下的MAC地址。如果你的操作系统很特殊的话,可以对方法进行扩充,原理类似的。


 

 

/** 
 * 与系统相关的一些常用工具方法. 
 *  
 * @author stephen 
 * @version 1.0.0 
 */ 
public class SystemTool {  
 
    /** 
     * 获取当前操作系统名称. 
     * return 操作系统名称 例如:windows xp,linux 等. 
     */ 
    public static String getOSName() {  
        return System.getProperty("os.name").toLowerCase();  
    }  
      
    /** 
     * 获取unix网卡的mac地址. 
     * 非windows的系统默认调用本方法获取.如果有特殊系统请继续扩充新的取mac地址方法. 
     * @return mac地址 
     */ 
    public static String getUnixMACAddress() {  
        String mac = null;  
        BufferedReader bufferedReader = null;  
        Process process = null;  
        try {  
            process = Runtime.getRuntime().exec("ifconfig eth0");// linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息  
            bufferedReader = new BufferedReader(new InputStreamReader(process  
                    .getInputStream()));  
            String line = null;  
            int index = -1;  
            while ((line = bufferedReader.readLine()) != null) {  
                index = line.toLowerCase().indexOf("hwaddr");// 寻找标示字符串[hwaddr]  
                if (index >= 0) {// 找到了  
                    mac = line.substring(index +"hwaddr".length()+ 1).trim();//  取出mac地址并去除2边空格  
                    break;  
                }  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (bufferedReader != null) {  
                    bufferedReader.close();  
                }  
            } catch (IOException e1) {  
                e1.printStackTrace();  
            }  
            bufferedReader = null;  
            process = null;  
        }  
 
        return mac;  
    }  
 
    /** 
     * 获取widnows网卡的mac地址. 
     * @return mac地址 
     */ 
    public static String getWindowsMACAddress() {  
        String mac = null;  
        BufferedReader bufferedReader = null;  
        Process process = null;  
        try {  
            process = Runtime.getRuntime().exec("ipconfig /all");// windows下的命令,显示信息中包含有mac地址信息  
            bufferedReader = new BufferedReader(new InputStreamReader(process  
                    .getInputStream()));  
            String line = null;  
            int index = -1;  
            while ((line = bufferedReader.readLine()) != null) {  
                index = line.toLowerCase().indexOf("physical address");// 寻找标示字符串[physical address]  
                if (index >= 0) {// 找到了  
                    index = line.indexOf(":");// 寻找":"的位置  
                    if (index>=0) {  
                        mac = line.substring(index + 1).trim();//  取出mac地址并去除2边空格  
                    }  
                    break;  
                }  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (bufferedReader != null) {  
                    bufferedReader.close();  
                }  
            } catch (IOException e1) {  
                e1.printStackTrace();  
            }  
            bufferedReader = null;  
            process = null;  
        }  
 
        return mac;  
    }  
 
    /** 
     * 测试用的main方法. 
     *  
     * @param argc 
     *            运行参数. 
     */ 
    public static void main(String[] argc) {  
        String os = getOSName();  
        System.out.println(os);  
        if(os.startsWith("windows")){  
            //本地是windows  
            String mac = getWindowsMACAddress();  
            System.out.println(mac);  
        }else{  
            //本地是非windows系统 一般就是unix  
            String mac = getUnixMACAddress();  
            System.out.println(mac);  
        }  
    }  

java 获取本机的所有网卡的Mac地址

public class Mac { public static void main(String[] args) { try { Enumeratio...
  • woai671
  • woai671
  • 2017年07月26日 17:19
  • 1245

java:多网卡环境下获取MAC地址

JDK6以后 java.net.NetworkInterface提供了完整的方法用于获取网络设备信息。 调用 NetworkInterface.getNetworkInterfaces()可以返回所...
  • 10km
  • 10km
  • 2017年11月18日 17:22
  • 460

用VC获取本机MAC地址

环境:w2k  +   vc6.0   说明:这里只能获得MAC地址。#include "stdafx.h"#include      #include      #include      #inc...
  • wxiaozhe
  • wxiaozhe
  • 2006年06月26日 15:02
  • 3818

VB获取所有网卡MAC地址

VB 网络变成 MAC地址 网卡
  • bodybo
  • bodybo
  • 2010年07月27日 11:32
  • 4398

请问如何在内核中得到网卡的mac地址?根据网卡名子得到mac地址也可

ww7109(stranger)04-08-23 14:10 请问如何在内核中得到网卡的mac地址?根据网卡名子得到mac地址也可 回复 文章选项:       dl_dht(addict)0...
  • ryman
  • ryman
  • 2005年04月24日 15:48
  • 3078

使用WinPcap获取网卡MAC地址

关键字:WinPcap 网卡 MAC地址 作者:txw1958 在WpdPack_4_1_2\WpdPack\Examples-remote\PacketDriver\GetMacAddress\...
  • qianglee
  • qianglee
  • 2013年12月22日 11:16
  • 1182

获取当前计算机MAC地址 BCB实现

bool GetNetMacAddress(String *AResult) { try { AnsiString msg="",str; ASTAT Adapter; N...
  • guolonghui
  • guolonghui
  • 2011年04月06日 16:03
  • 1673

纯Java获得本机MAC地址

class Ipconfig { public static void main(String[] arguments) throws Exception { InetAddress ia = I...
  • henryzhang2009
  • henryzhang2009
  • 2016年02月22日 16:38
  • 977

C#获得本机物理网卡的MAC地址

今天中午吃饭前看到四月份记录的一个bug,当电脑上插了自己的无线时,软件无法打开的情况,当时也没去解决(客户说拔了无线就好了)。午饭时想了想感觉应该在验证授权时获取MAC地址出错,吃完回来一看代码,果...
  • pfe_Nova
  • pfe_Nova
  • 2014年07月02日 14:54
  • 6655

Python获取本机所有网卡的MAC地址

Python获取本机所有网卡的MAC地址
  • dongfuguo
  • dongfuguo
  • 2017年06月05日 09:11
  • 1696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java获取本机网卡的MAC地址
举报原因:
原因补充:

(最多只允许输入30个字)