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


    方法一:

    调用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查询,获取它的返回值就可以获取到它所有的网卡地址

    .Net 技术探讨群 4151320

    欢迎大家加入!!!

  • 相关阅读:
    HTML5-Input
    在安装搜狗输入法的时候找到的一个安装手动下载软件的包
    IP结构与操作之__inet_insert_ifa/__inet_del_ifa
    IP结构与操作之inet_addr_onlink
    IP结构与操作之inet_confirm_addr && confirm_addr_indev
    IP结构与操作之inet_select_addr
    IP结构与操作之inetdev_init && inetdev_destroy
    IP结构与操作之in_device结构和in_ifaddr结构
    网络模块初始化
    网络设备之uc_promisc
  • 原文地址:https://www.cnblogs.com/happyday56/p/1442118.html
Copyright © 2020-2023  润新知