`
ErHuo
  • 浏览: 21870 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

获取系统mac地址,及地址

阅读更多
package com.btlh.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/**
* 类功能说明 TODO:获取物理地址 
* 类修改者
* 修改日期
* 修改说明
* <p>Title: GetMacAddressUtil.java</p>
* <p>Description:XXXXX</p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company:XXXXX有限公司</p>
* @author lsy xxxxxxx
* @date 2013-5-2 下午1:48:52
* @version V1.0
*/

public class GetMacAddressUtil
{
	/**
	 * 获取当前操作系统名称. 
	 * return 操作系统名称 例如:windows,Linux,Unix等.
	 */
	public static String getOSName()
	{
		return System.getProperty("os.name").toLowerCase();
	}

	/**
	 * 获取Unix网卡的mac地址.
	 * @return mac地址
	 */
	public static String getUnixMACAddress()
	{
		String mac = null;
		BufferedReader bufferedReader = null;
		Process process = null;
		try
		{
			/**
			 * Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息
			 */
			process = Runtime.getRuntime().exec("ifconfig eth0");
			bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
			String line = null;
			int index = -1;
			while ((line = bufferedReader.readLine()) != null)
			{
				/**
				 * 寻找标示字符串[hwaddr]
				 */
				index = line.toLowerCase().indexOf("hwaddr");
				/**
				 * 找到了
				 */
				if (index != -1)
				{
					/**
					 * 取出mac地址并去除2边空格
					 */
					mac = line.substring(index + "hwaddr".length() + 1).trim();
					break;
				}
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		} finally
		{
			try
			{
				if (bufferedReader != null)
				{
					bufferedReader.close();
				}
			} catch (IOException e1)
			{
				e1.printStackTrace();
			}
			bufferedReader = null;
			process = null;
		}

		return mac;
	}

	/**
	 * 获取Linux网卡的mac地址.
	 * 
	 * @return mac地址
	 */
	public static String getLinuxMACAddress()
	{
		String mac = null;
		BufferedReader bufferedReader = null;
		Process process = null;
		try
		{
			/**
			 * linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息
			 */
			process = Runtime.getRuntime().exec("ifconfig eth0");
			bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
			String line = null;
			int index = -1;
			while ((line = bufferedReader.readLine()) != null)
			{
				index = line.toLowerCase().indexOf("硬件地址");
				/**
				 * 找到了
				 */
				if (index != -1)
				{
					/**
					 * 取出mac地址并去除2边空格
					 */
					mac = line.substring(index + 4).trim();
					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
		{
			/**
			 * windows下的命令,显示信息中包含有mac地址信息
			 */
			process = Runtime.getRuntime().exec("ipconfig /all");
			bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
			String line = null;
			int index = -1;
			while ((line = bufferedReader.readLine()) != null)
			{
				/**
				 * 寻找标示字符串[physical address]
				 */
				index = line.toLowerCase().indexOf("physical address");
				if (index != -1)
				{
					index = line.indexOf(":");
					if (index != -1)
					{
						/**
						 * 取出mac地址并去除2边空格
						 */
						mac = line.substring(index + 1).trim();
					}
					break;
				}
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		} finally
		{
			try
			{
				if (bufferedReader != null)
				{
					bufferedReader.close();
				}
			} catch (IOException e1)
			{
				e1.printStackTrace();
			}
			bufferedReader = null;
			process = null;
		}

		return mac;
	}

	
	//WindowsCmd ="cmd.exe /c echo %NUMBER_OF_PROCESSORS%";//windows的特殊
	//SolarisCmd = {"/bin/sh", "-c", "/usr/sbin/psrinfo | wc -l"};  
	//AIXCmd = {"/bin/sh", "-c", "/usr/sbin/lsdev -Cc processor | wc -l"};  
	//HPUXCmd = {"/bin/sh", "-c", "echo \"map\" | /usr/sbin/cstm | grep CPU | wc -l "}; 
	//LinuxCmd = {"/bin/sh", "-c", "cat /proc/cpuinfo | grep ^process | wc -l"}; 

	/**
	 * 测试用的main方法.
	 * 
	 * @param argc
	 *            运行参数.
	 */
	public static void main(String[] argc )
	{
		String os = getOSName();
		System.out.println(os);
		if (os.startsWith("windows"))
		{
			String mac = getWindowsMACAddress();
			System.out.println("本地是windows:" + mac);
		} else if (os.startsWith("linux"))
		{
			String mac = getLinuxMACAddress();
			System.out.println("本地是Linux系统,MAC地址是:" + mac);
		} else
		{
			String mac = getUnixMACAddress();
			System.out.println("本地是Unix系统 MAC地址是:" + mac);
		}
	}

}

分享到:
评论

相关推荐

    获取电脑mac地址

    本工具专注于在Windows操作系统中获取电脑的MAC地址,提供了一种便捷的方法来查看这一关键信息。 获取电脑MAC地址的方法有很多种,但使用专门的工具如"MAC.exe"可以使这个过程更简单,避免了通过命令行或网络配置...

    获取mac地址的几种方法

    在不同的操作系统中,可以通过内置的命令行工具来获取MAC地址: - **Windows**:打开命令提示符,输入`ipconfig /all`,在输出信息中找到适配器的物理地址,即为MAC地址。 - **Linux**:在终端中输入`ifconfig`...

    socket编程获取mac地址

    需要注意的是,获取MAC地址的方法可能因操作系统的不同而有所不同,并且某些情况下,例如虚拟机或无物理网卡的环境,可能无法直接获取到真实的MAC地址。此外,为了保护用户隐私,操作系统可能会提供随机生成的MAC...

    通过IP地址获取对方MAC地址

    本文将详细介绍如何通过IP地址获取对方的MAC地址,并基于Windows系统,利用Iphlpapi.dll动态链接库中的SendArp()函数来实现这一功能。 首先,理解IP和MAC地址的基本概念。IP地址(Internet Protocol Address)是...

    最好的获取MAC地址的方法

    获取MAC地址的方法多种多样,尤其在PHP编程中,这是一项常见的需求,特别是在网络管理和系统监控场景下。以下将详细介绍如何在PHP中获取MAC地址以及相关的网络知识。 首先,我们了解MAC地址的基本概念。MAC地址是一...

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    获取本地MAC地址小程序

    这个"获取本地MAC地址小程序"是针对Windows操作系统开发的一个实用工具,它能够帮助用户快速获取自己计算机的物理MAC地址,对于网络配置、设备管理以及故障排查等方面具有实际应用价值。 在编程领域,尤其是在本地...

    获取网卡MAC地址 获取网卡MAC地址

    在不同的操作系统中,获取MAC地址的方法略有不同。以下是一些主要操作系统的获取方法: 1. **Windows系统**: - 命令行:通过运行`cmd`打开命令提示符,然后输入`getmac`命令,系统将列出所有网络适配器及其对应的...

    DELPHI获取网卡MAC地址.pdf

    SendARP函数是Windows操作系统提供的一个API函数,可以用来获取网卡的MAC地址。该函数的原型为: ``` function SendARP(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng: pointer): DWord; StdCall;...

    Chrome获取MAC地址扩展程序

    要实现这个功能,首先需要创建一个C++程序,该程序使用操作系统提供的API来获取MAC地址。在Windows系统中,这可能涉及使用`GetAdaptersAddresses`函数;在Linux系统中,可以使用`ifconfig`命令或`libpcap`库;在...

    获取客户端MAC地址Demo已经使用说明

    它通过安装一个客户端控件,使得Web页面能够与用户的本地系统进行更深入的交互,从而获取到客户端的MAC地址。这个控件通常是由JavaScript或者ActiveX等技术编写,可以在用户同意的情况下在浏览器内运行。 在这个...

    test-electron-vue用来获取电脑mac地址

    《使用test-electron-vue获取电脑MAC地址》 在现代计算机技术中,MAC(Media Access Control)地址是一个独特的硬件标识符,用于识别网络接口控制器。在开发基于Electron的桌面应用时,有时我们需要获取用户的MAC...

    LabVIEW获取主机MAC地址.rar

    总的来说,"LabVIEW获取主机MAC地址"的实例展示了如何在LabVIEW环境中与操作系统进行交互,获取系统级别的信息。这涉及到了DLL调用、系统API的理解以及数据处理等多方面技能,对于学习和理解LabVIEW的底层操作具有...

    c#获取MAC地址

    总结来说,C#获取MAC地址涉及到网络编程、操作系统交互和理解`System.Net.NetworkInformation`命名空间中的类和方法。通过使用这些工具,开发者可以构建出能够处理各种网络设备识别需求的应用。

    获取MAC地址_获取mac地址_

    而GetAdaptersInfo是Windows系统提供的API,可以通过遍历返回的适配器信息来获取MAC地址。 2. **C#**:在C#中,可以使用System.Net.NetworkInformation命名空间下的NetworkInterface类。调用...

    C语言去获取Linux系统的IP地址和MAC地址的方法

    ioctl函数是一个Unix中的少有的几个“家族类”复杂函数,它可以用于获取系统的所有接口列表、接口地址、接口标志、广播地址、子网掩码等信息。 首先,我们需要了解ioctl函数的参数结构。ioctl函数的参数只有三个,...

    pb获取ip地址/mac地址

    标题中的"pb获取ip地址/mac地址"指的是在PowerBuilder(简称pb)环境下获取计算机的IP地址和MAC地址。PowerBuilder是一种流行的.NET和Java应用程序开发工具,尤其适合于创建数据库驱动的应用程序。在这个场景中,...

    android jni获取 Mac地址

    在Android系统中,由于安全和隐私考虑,直接通过Java API获取MAC地址的权限受到了限制。因此,开发者有时需要通过JNI来绕过这些限制,直接访问底层系统接口。 首先,我们需要创建一个JNI函数,这个函数将在C/C++...

    获取本地ip,mac地址

    在IT行业中,网络通信是不可或缺的一部分,而获取设备的IP和MAC地址是网络通信的基础。本文将详细讲解如何使用C#编程语言来实现获取本地IP和MAC地址的功能。 首先,让我们了解一下IP和MAC地址的基本概念。IP地址...

    c++ 获取mac地址集中方法

    在C++编程中,获取计算机的MAC(Media Access Control)地址是一项常见的任务,尤其是在系统级编程或网络通信中。MAC地址是硬件级别的唯一标识符,用于在网络设备之间进行物理通信。以下是一些关于如何在C++中获取...

Global site tag (gtag.js) - Google Analytics