您的位置:首页 > 其它

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

2009-06-04 14:46 579 查看
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;

     }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: