zoukankan      html  css  js  c++  java
  • 获取客户端网卡MAC地址和IP地址的几种方法(一)

     

    获取客户端网卡MAC地址和IP地址的几种方法()

    作者:代码乱了

           在做B/S结构的系统时,我们常常需要获取客户端的一些信息,如IPMAC,以结合身份验证。在ASP.NET,要获取服务器端的MAC很容易,但是要获取客户端的MAC的地址确要花费一翻心思,通常的做法是调用Win32API或直接调用nbtstat命令,这样做有很多问题,而另一种方法就是直接用客户端脚本,我们这里用Javascript,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器端获取好。
            具体实现的html和javascript如下:

    <HTML><HEAD><TITLE>WMI Scripting HTML</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
     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 language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>
       
    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>

    <META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
    <BODY>
    <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
    <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></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 id=formfoo name=formbar action=NICPost.asp method=post><INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr> <INPUT value=192.168.0.2 name=txtIPAddr> <INPUT value=typ name=txtDNSName> </FORM></BODY></HTML>

            其实最关键的还是用到两个ActiveX:
            <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
            <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
            不过这两个ActiveX都是系统自带,不用去下载或注册。
            接下来的工作就是用脚本和ActiveX交互,脚本可以是js或Vbs都可以,不过我个人喜欢用js。下一篇我将具体的谈谈在服务器端结合.net获取客户端MAC的方法,并比较这几中方法的优劣。
     


  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/jintan/p/246696.html
Copyright © 2011-2022 走看看