专注于深圳企业建站,深圳做网站首选建站公司收藏本站|设为首页

您现在的位置: 网站首页 > 网站专题 > 网络编程 > 详细内容

JSF/JAVA根据IP获取客户端Mac地址

2010-11-15 9:43:15 来源: 云梯科技 www.wangzhan114.com [ ]

JSF/JAVA根据IP获取客户端Mac地址

    需要对用户的 ip 和 mac 地址进行验证,这里用到获取客户端ip和mac地址的两个方法,留存。

  1.获取客户端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 "";

  }

  2.获取客户端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 = 1; i < 100; i++) {

  str = input.readLine();

  if (str != null) {

  if (str.indexOf("MAC Address") > 1) {

  macAddress = str.substring(str.indexOf("MAC Address") + 14, 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 = 1; i < 100; i++) {

  str = input.readLine();

  if (str != null) {

  if (str.indexOf("MAC Address") > 1) {

  strMAC = str.substring(str.indexOf("MAC Address") + 14,

  str.length());

  break;

  }

  }

  }

  } catch (IOException ex) {

  return "Can't Get MAC Address!";

  }

  //

  if (strMAC.length() < 17) {

  return "Error!";

  }

  macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)

  + ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)

  + ":" + strMAC.substring(12, 14) + ":"

  + strMAC.substring(15, 17);

  //

  return macAddress;