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);
}
}
}
分享到:
相关推荐
本工具专注于在Windows操作系统中获取电脑的MAC地址,提供了一种便捷的方法来查看这一关键信息。 获取电脑MAC地址的方法有很多种,但使用专门的工具如"MAC.exe"可以使这个过程更简单,避免了通过命令行或网络配置...
在不同的操作系统中,可以通过内置的命令行工具来获取MAC地址: - **Windows**:打开命令提示符,输入`ipconfig /all`,在输出信息中找到适配器的物理地址,即为MAC地址。 - **Linux**:在终端中输入`ifconfig`...
需要注意的是,获取MAC地址的方法可能因操作系统的不同而有所不同,并且某些情况下,例如虚拟机或无物理网卡的环境,可能无法直接获取到真实的MAC地址。此外,为了保护用户隐私,操作系统可能会提供随机生成的MAC...
本文将详细介绍如何通过IP地址获取对方的MAC地址,并基于Windows系统,利用Iphlpapi.dll动态链接库中的SendArp()函数来实现这一功能。 首先,理解IP和MAC地址的基本概念。IP地址(Internet Protocol Address)是...
获取MAC地址的方法多种多样,尤其在PHP编程中,这是一项常见的需求,特别是在网络管理和系统监控场景下。以下将详细介绍如何在PHP中获取MAC地址以及相关的网络知识。 首先,我们了解MAC地址的基本概念。MAC地址是一...
在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...
这个"获取本地MAC地址小程序"是针对Windows操作系统开发的一个实用工具,它能够帮助用户快速获取自己计算机的物理MAC地址,对于网络配置、设备管理以及故障排查等方面具有实际应用价值。 在编程领域,尤其是在本地...
在不同的操作系统中,获取MAC地址的方法略有不同。以下是一些主要操作系统的获取方法: 1. **Windows系统**: - 命令行:通过运行`cmd`打开命令提示符,然后输入`getmac`命令,系统将列出所有网络适配器及其对应的...
SendARP函数是Windows操作系统提供的一个API函数,可以用来获取网卡的MAC地址。该函数的原型为: ``` function SendARP(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng: pointer): DWord; StdCall;...
要实现这个功能,首先需要创建一个C++程序,该程序使用操作系统提供的API来获取MAC地址。在Windows系统中,这可能涉及使用`GetAdaptersAddresses`函数;在Linux系统中,可以使用`ifconfig`命令或`libpcap`库;在...
它通过安装一个客户端控件,使得Web页面能够与用户的本地系统进行更深入的交互,从而获取到客户端的MAC地址。这个控件通常是由JavaScript或者ActiveX等技术编写,可以在用户同意的情况下在浏览器内运行。 在这个...
《使用test-electron-vue获取电脑MAC地址》 在现代计算机技术中,MAC(Media Access Control)地址是一个独特的硬件标识符,用于识别网络接口控制器。在开发基于Electron的桌面应用时,有时我们需要获取用户的MAC...
总的来说,"LabVIEW获取主机MAC地址"的实例展示了如何在LabVIEW环境中与操作系统进行交互,获取系统级别的信息。这涉及到了DLL调用、系统API的理解以及数据处理等多方面技能,对于学习和理解LabVIEW的底层操作具有...
总结来说,C#获取MAC地址涉及到网络编程、操作系统交互和理解`System.Net.NetworkInformation`命名空间中的类和方法。通过使用这些工具,开发者可以构建出能够处理各种网络设备识别需求的应用。
而GetAdaptersInfo是Windows系统提供的API,可以通过遍历返回的适配器信息来获取MAC地址。 2. **C#**:在C#中,可以使用System.Net.NetworkInformation命名空间下的NetworkInterface类。调用...
ioctl函数是一个Unix中的少有的几个“家族类”复杂函数,它可以用于获取系统的所有接口列表、接口地址、接口标志、广播地址、子网掩码等信息。 首先,我们需要了解ioctl函数的参数结构。ioctl函数的参数只有三个,...
标题中的"pb获取ip地址/mac地址"指的是在PowerBuilder(简称pb)环境下获取计算机的IP地址和MAC地址。PowerBuilder是一种流行的.NET和Java应用程序开发工具,尤其适合于创建数据库驱动的应用程序。在这个场景中,...
在Android系统中,由于安全和隐私考虑,直接通过Java API获取MAC地址的权限受到了限制。因此,开发者有时需要通过JNI来绕过这些限制,直接访问底层系统接口。 首先,我们需要创建一个JNI函数,这个函数将在C/C++...
在IT行业中,网络通信是不可或缺的一部分,而获取设备的IP和MAC地址是网络通信的基础。本文将详细讲解如何使用C#编程语言来实现获取本地IP和MAC地址的功能。 首先,让我们了解一下IP和MAC地址的基本概念。IP地址...
在C++编程中,获取计算机的MAC(Media Access Control)地址是一项常见的任务,尤其是在系统级编程或网络通信中。MAC地址是硬件级别的唯一标识符,用于在网络设备之间进行物理通信。以下是一些关于如何在C++中获取...