知识大全 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地址的方法

ASP.NET获取IP与MAC地址的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 在ASP中获取客户端MAC地址的方法

在ASP中获取客户端MAC地址的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本程序属于一

知识大全 php/js获取客户端mac地址的实现代码

这篇文章主要介绍了如何在php与js中分别获取客户度mac地址的方法需要的朋友可以参考下   废话不多讲直接上代码吧!复制代码代码如下:<?php  classMa

知识大全 asp.net获取客户端IP地址网卡

asp.net获取客户端IP地址网卡  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Java开发的WebService获取客户端IP地址

Java开发的WebService获取客户端IP地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java获取客户端真实IP地址的两种方法

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的方法

用C#编写获取远程IP,MAC的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果要想获得

知识大全 利用Java获取本机mac地址

利用Java获取本机mac地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicsta