java读取MAC地址的工具方法,可以读取windows和非windows操作系统(linux,unix、或者MAC Mini下IOS系统)下的MAC地址
基于验证的方法可以离线验证和在线验证
在线验证是通过调用webservicej接口通过服务器端比对判断和验证传入的参数 通过就PASS或者不通过就失败 过期重新申请授权码
这首先首次必须通过首次申请授权码 当管理者赋予给用户授权码时 用户可以通过授权码来验证使用软体权限,还有就是软体赋予给用户的使用期限
如果过期就要重新申请来使用。
在获取MAC时要特别注意获取网卡的地址是否存在虚拟网卡也就是伪网卡 有的可能存在两个或者两个以上的网卡 要获取的是物理网卡地址
必须判断或者通过另一种方法来解决 要么通过IP来获取MAC Address 根据网卡绑定的 IP 地址获得 NetworkInterface 对象这样不会存在获取不真实的MAC地址。一般通过命令来获取MAC会存在一些问题。如果有多个IP,只匹配本IP对应的Mac.
关于获取IP地址的方式,在Linux平台下下,如果单纯通过InetAddress来获取IP地址,就会出现在不同的机器上IP地址不同的问题。
InetAddress.getLocalHost().getAddress() 实际上是根据hostname来获取IP地址的。linux系统在刚刚装完默认的hostname是localhost,所以通过上面代码获取到的本机ip就是127.0.0.1, 而在windows平台下获取ip是可以的。
暂时采用下面代码来处理
public static byte[] getIp() throws UnknownHostException {
byte[] b = InetAddress.getLocalHost().getAddress();
Enumeration allNetInterfaces = null;
try
{
allNetInterfaces = NetworkInterface.getNetworkInterfaces();
}
catch (SocketException e)
{
e.printStackTrace();
}
InetAddress ip = null;
NetworkInterface netInterface = null;
while (allNetInterfaces.hasMoreElements())
{
netInterface = (NetworkInterface) allNetInterfaces.nextElement();
if (netInterface.getName().trim().equals("eth0"))
{
Enumeration addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements())
{
ip = (InetAddress) addresses.nextElement();
}
break;
}
}
if (ip != null &&ip instanceof Inet4Address)
{
return b = ip.getAddress();
}
return b;