码迷,mamicode.com
首页 > 系统相关 > 详细

根据IP地址获取用户的mac地址

时间:2015-10-14 14:32:26      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

根据实际需要可以使用以下的代码 获取MAC地址。

/**
	 * 根据IP地址获取mac地址
	 * @param ipAddress 127.0.0.1
	 * @return
	 * @throws SocketException
	 * @throws UnknownHostException
	 */
	public static String getLocalMac(String ipAddress) throws SocketException,
			UnknownHostException {
		// TODO Auto-generated method stub
		String str = "";
		String macAddress = "";
		final String LOOPBACK_ADDRESS = "127.0.0.1";
		// 如果为127.0.0.1,则获取本地MAC地址。
		if (LOOPBACK_ADDRESS.equals(ipAddress)) {
			InetAddress inetAddress = InetAddress.getLocalHost();
			// 貌似此方法需要JDK1.6。
			byte[] mac = NetworkInterface.getByInetAddress(inetAddress)
					.getHardwareAddress();
			// 下面代码是把mac地址拼装成String
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < mac.length; i++) {
				if (i != 0) {
					sb.append("-");
				}
				// mac[i] & 0xFF 是为了把byte转化为正整数
				String s = Integer.toHexString(mac[i] & 0xFF);
				sb.append(s.length() == 1 ? 0 + s : s);
			}
			// 把字符串所有小写字母改为大写成为正规的mac地址并返回
			macAddress = sb.toString().trim().toUpperCase();
			return macAddress;
		} else {
			// 获取非本地IP的MAC地址
			try {
				System.out.println(ipAddress);
				Process p = Runtime.getRuntime()
						.exec("nbtstat -A " + ipAddress);
				System.out.println("===process=="+p);
				InputStreamReader ir = new InputStreamReader(p.getInputStream());
				
				BufferedReader br = new BufferedReader(ir);
			
				while ((str = br.readLine()) != null) {
					if(str.indexOf("MAC")>1){
						macAddress = str.substring(str.indexOf("MAC")+9, str.length());
						macAddress = macAddress.trim();
						System.out.println("macAddress:" + macAddress);
						break;
					}
				}
				p.destroy();
				br.close();
				ir.close();
			} catch (IOException ex) {
			}
			return macAddress;
		}
	}
	
	
	/**
	 * 通过HttpServletRequest返回IP地址
	 * 
	 * @param request
	 *            HttpServletRequest
	 * @return ip String
	 * @throws Exception
	 */
	public static String getIpAddr(HttpServletRequest request) throws Exception {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("HTTP_CLIENT_IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("HTTP_X_FORWARDED_FOR");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}

根据IP地址获取用户的mac地址

标签:

原文地址:http://my.oschina.net/zhengweishan/blog/517051

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!