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);
}
}
}
分享到:
相关推荐
SendARP函数是Windows操作系统提供的一个API函数,可以用来获取网卡的MAC地址。该函数的原型为: ``` function SendARP(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng: pointer): DWord; StdCall;...
java获取不同操作系统的名称以及mac地址工具类,例如:windows,Linux,Unix等
C语言获取mac地址和IP地址的源代码,Linux系统下面。
在对网内主机进行监控时需要通过java获取远程机器的mac地址
获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request....因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip mac地址
安卓获取系统的信息,安卓系统版本号,内核版本号,手机型号,wifiMac地址,蓝牙mac地址等
这是一个获取本地MAC地址小程序,实用性比较强,大家快来下载
Delphi获取网卡mac地址的pas文件,关键部分函数全在里面,方便使用和调试,xp系统下有点bug,可能获取不到mac地址,原因我没细研究
window下c获取MAC地址,实现原理很简单
java获取系统mac地址,可以支持英文和中文(其他语言需要修改代码),本人亲自测试可用。
摘要在以太网中,获取 MAC 地址常常是其他工作的前提,本实验要求使用系统提供的命令和利用 WinPcap 编程两种方式获取以太网中的主机的 MAC 地址,通过
获取MAC地址的java-API方法
java获取系统mac地址(win7版)案例,已测试,成功运行
获取当前操作系统名称. return 操作系统名称 例如:windows,Linux,Unix等.
ASP获取远程MAC地址的 ACTIVE DLL源码(VB) 哥哥姐姐们,这是VB编写的DLL源码,需要编译后注册,然后再由ASP调用。由于调用了系统API所以需要比较高的权限。不是什么商业软件,仅供研究学习之用,不保证兼容所以...
几个月前开始学python,感觉python库很多,比其他语言使用...经过网上搜寻资料,发现要实现获取操作系统版本、计算机名、用户名、MAC地址、IP地址然后打印成二维码需要使用到4个python库,接下来一个一个库试试怎么用。
NULL 博文链接:https://360112624-qq-com.iteye.com/blog/1198688
java获取客户端ip及mac地址方法,适合web开发者
主要介绍了python获取本机mac地址和ip地址的方法,涉及Python获取系统相关信息的技巧,需要的朋友可以参考下
VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧