根据IP地址获取用户的MAC地址Java代码详解编程语言

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

 

[Java]代码    

/** 
	 * 根据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; 
		} 
	} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10152.html

(0)
上一篇 2021年7月19日 10:00
下一篇 2021年7月19日 10:00

相关推荐

发表回复

登录后才能评论