Servlet获取客户端的IP与MAC地址

来源:互联网 发布:淘宝的飞猪旅行可靠吗 编辑:程序博客网 时间:2024/05/01 04:34


public class CheckMACandIP extends HttpServlet {
 public CheckMACandIP() {
  super();
 }
 public void destroy() {
  super.destroy();
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request,response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String ip = getRemoteAddress(request);
  System.out.println(ip);
  System.out.println(getMACAddress(ip));
 }
 public void init() throws ServletException {
 }
 public String getRemoteAddress(HttpServletRequest request){   
     String ip = request.getHeader("x-forwarded-for");   
     if(ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) ip = request.getHeader("Proxy-Client-IP");   
     if(ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) ip = request.getHeader("WL-Proxy-Client-IP");   
     if(ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) ip = request.getRemoteAddr();   
     return ip;   
 }
   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;
     }
}

 


原创粉丝点击