知识大全 JSF/JAVA根据IP获取客户端Mac地址
Posted 地址
篇首语:人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSF/JAVA根据IP获取客户端Mac地址相关的知识,希望对你有一定的参考价值。
JSF/JAVA根据IP获取客户端Mac地址 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
需要对用户的 ip 和 mac 地址进行验证 这里用到获取客户端ip和mac地址的两个方法 留存
获取客户端ip地址( 这个必须从客户端传到后台)
jsp页面下 很简单 request getRemoteAddr() ;
因为系统的VIew层是用JSF来实现的 因此页面上没法直接获得类似request 在bean里做了个强制转换
Java代码
public String getMyIP()
try
FacesContext fc = FacesContext getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)fc getExternalContext() getRequest();
return request getRemoteAddr();
catch (Exception e)
e printStackTrace();
return ;
获取客户端mac地址
调用window的命令 在后台Bean里实现 通过ip来获取mac地址 方法如下
Java代码
public String getMACAddress(String ip)
String str = ;
String macAddress = ;
try
Process p = Runtime getRuntime() exec( nbtstat A + ip);
InputStreamReader ir = new InputStreamReader(p getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = ; i < ; i++)
str = input readLine();
if (str != null)
if (str indexOf( MAC Address ) > )
macAddress = str substring(str indexOf( MAC Address ) + str length());
break;
catch (IOException e)
e printStackTrace(System out);
return macAddress;
完整代码
Java代码
import java io IOException;
import java io InputStreamReader;
import java io LineNumberReader;
public class GetMACAddress
public String getMACAddress(String ipAddress)
String str = strMAC = macAddress = ;
try
Process pp = Runtime getRuntime() exec( nbtstat a + ipAddress);
InputStreamReader ir = new InputStreamReader(pp getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = ; i < ; i++)
str = input readLine();
if (str != null)
if (str indexOf( MAC Address ) > )
strMAC = str substring(str indexOf( MAC Address ) +
str length());
break;
catch (IOException ex)
return Can t Get MAC Address! ;
//
if (strMAC length() < )
return Error! ;
macAddress = strMAC substring( ) + : + strMAC substring( )
+ : + strMAC substring( ) + : + strMAC substring( )
+ : + strMAC substring( ) + :
+ strMAC substring( );
//
return macAddress;
public static void main(String[] args)
GetMACAddress getMACAddress = new GetMACAddress();
System out println(getMACAddress getMACAddress( )); //获得该ip地址的mac地址
public static String procAll(String str)
return procStringEnd(procFirstMac(procAddress(str)));
public static String procAddress(String str)
int indexof = str indexOf( Physical Address );
if (indexof > )
return str substring(indexof str length());
return str;
public static String procFirstMac(String str)
int indexof = str indexOf( : );
if (indexof > )
return str substring(indexof + str length()) trim();
return str;
public static String procStringEnd(String str)
int indexof = str indexOf( \\r );
if (indexof > )
return str substring( indexof) trim();
return str;
只要写一个servlet来调用这个类的getMACAddress(String netip)方法就可以获得客户端的mac地址了 相信你会写jsp应该对servlet也不陌生吧 在jsp中调用servlet通过session传递返回的mac地址 加以判断就可以了
mac地址是可以通过注册表修改的 不建议以此来作为限制依据~
补充
关于获取IP地址的方式 最近在linux下有一个教训 如果单纯通过InetAddress来获取IP地址 就会出现在不同的机器上IP地址不同的问题
InetAddress getLocalHost() getAddress() 实际上是根据hostname来获取IP地址的 linux系统在刚刚装完默认的hostname是localhost 所以通过上面代码获取到的本机 ip就是 相对应 比如我的hostname就是 返回的ip地址确是的地址 暂时采用下面代码来处理 当然还不够灵活
public static byte[] getIp() throws UnknownHostException
byte[] b = InetAddress getLocalHost() getAddress();
Enumeration allNetInterfaces = null;
try
allNetInterfaces = NeorkInterface getNeorkInterfaces();
catch (SocketException e)
e printStackTrace();
InetAddress ip = null;
NeorkInterface netInterface = null;
while (allNetInterfaces hasMoreElements())
netInterface = (NeorkInterface) allNetInterfaces nextElement();
if (netInterface getName() trim() equals( eth ))
Enumeration addresses = netInterface getInetAddresses();
while (addresses hasMoreElements())
ip = (InetAddress) addresses nextElement();
break;
if (ip != null && ip instanceof Inet Address)
return b = ip getAddress();
return b;
补充
// 获取真实IP的方法()
public String getIpAddr(HttpServletRequest request)
String ip = request getHeader( x forwarded for );
if(ip == null || ip length() == || unknown equalsIgnoreCase(ip))
ip = request getHeader( Proxy Client IP );
if(ip == null || ip length() == || unknown equalsIgnoreCase(ip))
ip = request getHeader( WL Proxy Client IP );
if(ip == null || ip length() == || unknown equalsIgnoreCase(ip))
ip = request getRemoteAddr();
return ip;
cha138/Article/program/Java/hx/201311/26784相关参考
ASP.NET获取IP与MAC地址的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在ASP中获取客户端MAC地址的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本程序属于一
这篇文章主要介绍了如何在php与js中分别获取客户度mac地址的方法需要的朋友可以参考下 废话不多讲直接上代码吧!复制代码代码如下:<?php classMa
asp.net获取客户端IP地址网卡 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
知识大全 Java开发的WebService获取客户端IP地址
Java开发的WebService获取客户端IP地址 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java获取客户端真实IP地址的两种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在JSP
知识大全 .net通过获取客户端IP地址反查出用户的计算机名
.net通过获取客户端IP地址反查出用户的计算机名 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 苹果手机的Mac地址个IP地址泄漏给IT的同事,自己改了IP地址,还有可能被监控上网行为么
苹果手机的Mac地址个IP地址泄漏给IT的同事,自己改了IP地址,还有可能被监控上网行为么? 以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后
用C#编写获取远程IP,MAC的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果要想获得
利用Java获取本机mac地址 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! publicsta