java中使用cmd命令nbstat获取远程计算机mac地址疑惑
使用一个jsp,用servlet的api获取request的ip. 然后通过这个ip,使用nbstat -A +ip 这个命令获取远程计算机的mactest.jsp:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>首页</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body><%String ip = request.getHeader("x-forwarded-for");System.out.println(request.getHeader("Proxy-Client-IP"));System.out.println(request.getHeader("WL-Proxy-Client-IP"));System.out.println(request.getRemoteAddr());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();System.out.println(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();System.out.println(str);if (str != null) {if (str.indexOf("MAC Address") > 1) { System.out.println("XX");macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());break;}}}} catch (IOException e) {e.printStackTrace(System.out);}%>ip:<%=ip %> macAddress:<%=macAddress %></body></html> 我在两台电脑的cmd下运行了,也不行,都能得到对方的ip,但不能使用nbstat
猜测:估计是有防火墙之类的东西阻止别的计算机用nbstat访问适配器信息
页:
[1]