`
wjt276
  • 浏览: 650298 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

java 根据IP获取客户端Mac地址

    博客分类:
  • Java
阅读更多
需要对用户的 ip 和 mac 地址进行验证,这里用到获取客户端ip和mac地址的两个方法,留存。

1.获取客户端ip地址( 这个必须从客户端传到后台):
   jsp页面下,很简单,request.getRemoteAddr() ;
   因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换
   public String getMyIP() {
        try {
            FacesContext fc = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
            return request.getRemoteAddr();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }


2.获取客户端mac地址
    调用window的命令,在后台Bean里实现 通过ip来获取mac地址。方法如下:

   
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;
    }


完整代码:

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.LineNumberReader;

public class GetMACAddress { 
public String getMACAddress(String ipAddress) { 
String str = "", strMAC = "", macAddress = ""; 
try { 
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress); 
InputStreamReader ir = new InputStreamReader(pp.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) { 
strMAC = str.substring(str.indexOf("MAC Address") + 14, 
str.length()); 
break; 
} 
} 
} 
} catch (IOException ex) { 
return "Can't Get MAC Address!"; 
} 
// 
if (strMAC.length() < 17) { 
return "Error!"; 
}

macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5) 
+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11) 
+ ":" + strMAC.substring(12, 14) + ":" 
+ strMAC.substring(15, 17); 
// 
return macAddress; 
}

public static void main(String[] args) { 
GetMACAddress getMACAddress = new GetMACAddress(); 
System.out.println(getMACAddress.getMACAddress("59.78.63.38")); //获得该ip地址的mac地址 
}

public static String procAll(String str) { 
return procStringEnd(procFirstMac(procAddress(str))); 
}

public static String procAddress(String str) { 
int indexof = str.indexOf("Physical Address"); 
if (indexof > 0) { 
return str.substring(indexof, str.length()); 
} 
return str; 
}

public static String procFirstMac(String str) { 
int indexof = str.indexOf(":"); 
if (indexof > 0) { 
return str.substring(indexof + 1, str.length()).trim(); 
} 
return str; 
}

public static String procStringEnd(String str) { 
int indexof = str.indexOf("\r"); 
if (indexof > 0) { 
return str.substring(0, indexof).trim(); 
} 
return str; 
} 
}

只要写一个servlet来调用这个类的getMACAddress(String netip)方法就可以获得客户端的mac地址了,相信你会写jsp应该对servlet也不陌生吧,在jsp中调用servlet通过session传递返回的mac地址,加以判断就可以了

mac地址是可以通过注册表修改的,不建议以此来作为限制依据~
分享到:
评论
4 楼 小普洱他老爸 2013-07-07  
在linux下可以通过arp ip 命令获取到mac地址

这个是我执行的例子:

arp 192.168.1.104
? (192.168.1.104) at 0:1c:42:7e:f:31 on en1 ifscope [ethernet]
3 楼 zhuchao_ko 2011-09-27  
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);

改成 e
2 楼 yangkai 2010-04-14  
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Getting MAC Address From Javascript(IE Only)</title>
 
<script language="javascript">
function showMacAddress(){
 
	var obj = new ActiveXObject("WbemScripting.SWbemLocator");
	var s = obj.ConnectServer(".");
	var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
	var e = new Enumerator (properties);

 
	var output;
	output='<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
	output=output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
	while(!e.atEnd())

	{
		e.moveNext();
		var p = e.item ();
		if(!p) continue;
		output=output + '<tr bgColor="#FFFFFF">';
		output=output + '<td>' + p.Caption; + '</td>';
		output=output + '<td>' + p.MACAddress + '</td>';
		output=output + '</tr>';
	}

	output=output + '</table>';
	document.getElementById("box").innerHTML=output;
}
</script>
 
</head>
<body>
	<input type="button" value="Show MAC Address" onclick="showMacAddress()" />

	<div id="box">
	</div>
</body>
</html>

The code are also works fine in IE only.
1 楼 gwpking8419 2010-04-12  
如果是linux ,代码能执行 ?

相关推荐

    java 获取客户端ip mac地址

    ### Java 获取客户端 IP 和 MAC 地址 在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端...

    java获取客户端ip及mac地址

    ### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位...以上就是关于如何在 Java 中获取客户端 IP 地址及 MAC 地址的相关知识点介绍。

    java中获取客户端IP MAC信息

    可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!

    java通过ip获取mac地址的工具

    java中通过ip获取远程客户端的mac地址,支持跨平台

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    Java获取客户端IP及Mac地址(同网段).rar

    在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...

    JAVA如何获取客户端IP地址和MAC地址

    需要注意的是,在获取客户端MAC地址时,我们需要添加一个时间限制,以免超时。 获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。通过使用HttpServletRequest对象和...

    java中通过request获取IP以及MAC地址.java

    获取用户请求IP地址 根据IP地址获取mac地址

    通过java获取远程机器mac地址

    在对网内主机进行监控时需要通过java获取远程机器的mac地址

    通过客户端IP地址获取客户端MAC地址

    通过客户端的ip地址获取mac地址,本文文件本人测过,可用,请大家放心下载,绝不骗积分

    java通过ip获取客户端Mac地址的小例子

    以下是一个简单的Java示例,展示如何通过IP地址获取客户端的Mac地址: 首先,我们需要理解这个例子的基本流程: 1. 执行操作系统命令:通常,我们不能直接通过Java API获取Mac地址,而是需要借助操作系统提供的命令...

    asp.net获取客户端mac地址

    在ASP.NET中,获取客户端MAC(Media Access Control)地址是一项常见的需求,特别是在网络管理、设备认证或者特定的安全应用场景中。MAC地址是网络设备的物理地址,用于标识连接到网络的设备。然而,由于HTTP协议的...

    java根据本地IP获取mac地址的方法

    Java根据本地IP获取MAC地址的方法 Java根据本地IP获取MAC地址的方法是指通过Java语言获取本机或客户端的MAC地址。MAC地址是媒体访问控制地址,是网络设备的唯一标识符。在Java中,可以使用InetAddress和Network...

    获取客户端IP地址

    获取客户端提交申请时的ip地址,例如用于微信支付的获取客户端ip,根据配置不不同,有可能ipv4或ipv6,当服务器在自己电脑上,做测试是,可以使用127.0.0.1替代localhost

    获取客户端IP、MAC

    总的来说,获取客户端的IP和MAC地址涉及到了网络编程和系统级别的交互,开发者需要根据具体的应用场景和需求选择合适的方法。在处理多网卡或多IP环境时,更需要注意选择正确的网络接口。同时,获取MAC地址往往需要对...

    js获取客户端的IP mac地址

    ### JavaScript 获取客户端IP与MAC地址方法详解 #### 一、背景介绍 在Web开发中,有时需要获取客户端的网络信息,比如IP地址和MAC地址。这些信息可用于多种用途,如定位用户位置、进行网络监控等。然而,由于隐私...

    使用JAVA获取客户端MAC地址.pdf

    在Java编程环境中,获取客户端的MAC(Media Access Control)地址是一项常见的需求,特别是在网络通信或者设备识别等场景中。MAC地址是硬件级别的唯一标识符,它对应于网络接口控制器(NIC),在网络通信中用于标识...

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...

    用java实现获取MAC地址的方法

    ### 使用Java实现获取MAC地址的方法 #### 背景与目的 在计算机网络管理或安全领域,有时需要获取远程主机的MAC地址来进行设备识别或跟踪。本文将介绍一种使用Java编程语言来实现获取本地或远程计算机MAC地址的方法...

    java实现获取用户的MAC地址

    在Java编程中,获取客户端用户的MAC(Media Access Control)地址是一项常见的任务,特别是在网络通信或者设备识别等场景中。MAC地址是硬件级别的唯一标识,它是一个48位的数字,通常以冒号或破折号分隔的12个16进制...

Global site tag (gtag.js) - Google Analytics