如何获取客户端MAC地址(三个方法)

原创 2007年09月24日 17:05:00
 

方法一:

调用Windows的DOS命令,从输出结果中读取MAC地址:

public static String getMACAddress() {

String address = "";
String os = System.getProperty("os.name");
if ( os != null && os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br =
new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
}
catch (IOException e) { }
}
return address;
}

We can replace the "ipconfig" to "ping x.x.x.x" and "arp -a"...We can get the mac list...haha!!


缺点:只能取得服务器端MAC地址.如果要取得客户端的MAC地址,需用Applet.只针对MS-WIN系统.

 

方法二:

可以用JS或vbscript来调用WMI接口来获取Client端的MAC地址.

<html>
 <head>
 <title>WMI Scripting HTML</title>
 <script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">

             document.forms[0].txtMACAddr.value=unescape(MACAddr);
             document.forms[0].txtIPAddr.value=unescape(IPAddr);
             document.forms[0].txtDNSName.value=unescape(sDNSName);
             //document.formbar.submit();
        </script>
 
 <script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">

         if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
                  {

                   if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
                         MACAddr = objObject.MACAddress;

                   if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
                         IPAddr = objObject.IPAddress(0);

                   if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
                      sDNSName = objObject.DNSHostName;

                   }
        </script>
 </head>
 <body>
  <object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" VIEWASTEXT>
  </object>
  <object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo">
  </object>

  <script LANGUAGE="JScript">
               var service = locator.ConnectServer();
               var MACAddr ;
               var IPAddr ;
               var DomainAddr;
               var sDNSName;
               service.Security_.ImpersonationLevel=3;
               service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
         </script>


  <form method="POST" action="NICPost.asp" id="formfoo" name="formbar">

   <input type=text  name="txtMACAddr">
   <input type=text  name="txtIPAddr">
   <input type=text  name="txtDNSName">

  </form>
 </body>
</html>

关于WMI的详细信息可以参看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_tasks_for_scripts_and_applications.asp

平心而论,WMI的很强大的。原先需要动用重量级编程工具才能做到的事,现在用js/vbscript就可以做了。


获取多块网卡的MAC地址:

if(objObject.MACAddress != null && objObject.MACAddress != "undefined"){
                         MACAddr = objObject.MACAddress;
                         alert( MACAddr );
                   }


缺点:需要ActiveX支持.对MS-WIN系统有效.

方法三:

想137口发送UDP查询:

WINDOWS平台的客户端(当获取时它转换为服务端角色),NETBIOS协议在137口上,我们只要向它的137口发送UDP查询,获取它的返回值就可以获取到它所有的网卡地址

 

如何获取客户端MAC地址(三个方法)

方法一:调用Windows的DOS命令,从输出结果中读取MAC地址:public static String getMACAddress() { String address = "";String...
  • xzknet
  • xzknet
  • 2006年04月29日 00:06
  • 8611

如何获取客户端MAC地址(三个方法)

 方法一:调用Windows的DOS命令,从输出结果中读取MAC地址:public static String getMACAddress() { String address = "";String...
  • jshyjyw
  • jshyjyw
  • 2007年03月02日 13:51
  • 473

java获取客户端IP地址和MAC地址

最近项目中要获得客户端的mac地址。服务端是移植的centos系统,arm架构的盒子。客户端是手机和移动设备。(其它场景应该也是类似的) 首先要获得ip地址: 根据客户端的http请求,利用req...
  • LGCSSX
  • LGCSSX
  • 2014年06月12日 15:45
  • 10535

php如何获取服务器端mac与客户端mac地址

分享下php获取服务器端mac地址和客户端mac地址的方法。l 例1,获取服务器mac 地址。 ?php  /**  获取网卡的MAC地址原码;目前支持WIN/LI...
  • jbxue123
  • jbxue123
  • 2014年05月15日 11:53
  • 533

Java/JSP获得客户端网卡MAC地址的三种方法解析

从网上查找资料java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。1、通过命令方式,在客户端执行Ipconfig 等等2、通过ActiveX的方法3、通过向137的端口发送查询指令的方法...
  • Pipi0714
  • Pipi0714
  • 2008年11月19日 11:09
  • 12633

PHP获取客户端的网卡mac物理地址

获取客户端的mac地址是非常有用的一个功能,因为它是客户端的不可变的唯一标识,更换IP或者清除本地记录都是没用的。 Ruesin.com 所以获取mac地址经常会用到购买软件时的一机一激活码,...
  • iastro
  • iastro
  • 2017年09月18日 21:30
  • 790

ASP.NET获取客户端网卡使用的MAC地址信息

方式一:利用.NET自带的类库直接就可以获得using System; using System.Collections.Generic; using System.Linq; using Sy...
  • aspnet2002web
  • aspnet2002web
  • 2011年01月16日 00:46
  • 12505

Java获取客户端ip mac地址

Java获取客户端ip mac地址
  • baohuan_love
  • baohuan_love
  • 2013年11月16日 10:06
  • 4120

ASP.NET获取客户端IP及MAC地址

 获取客户端IP:private string GetClientIP()  {   string result = HttpContext.Current.Request.ServerVariabl...
  • jxufewbt
  • jxufewbt
  • 2006年11月04日 15:14
  • 6136

关于WEB服务器如何获取客户端MAC地址的问题

利用JAVA开发的WEB服务器,通过拦截器拦截客户端的URL请求后,可以得到远端客户端的IP地址, /** * 获取客户端的真实IP地址 * 如果服务器和客户端为同一台机器,则获...
  • vincent50411
  • vincent50411
  • 2015年01月04日 14:32
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何获取客户端MAC地址(三个方法)
举报原因:
原因补充:

(最多只允许输入30个字)