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

摘要:
在构建B/S系统时,我们经常需要获取客户端的一些信息,例如IP和MAC,以结合身份验证。具体的html和javascript如下:WMIScriptingHTML文档。表单[0]。txt MAC地址。值=unescape;document.forms[0].txtIPAddr.value=unescape;document.forms[0].txttDNSName.value=unescape;//document.formbar.submit();if(objObject.IPEnabled!=“undefined”)sDNSName=objObject.DNSHostName;}varservice=locator.ConnectServer();varMACAddr;varIPAddr;varDomainAddr;varsDNSName;service.Security_ImpersonationLevel=3;service.InstancesOfAsync;事实上,最重要的是使用两个ActiveX:然而,这两个ActiveX随系统提供,不需要下载或注册。下一步工作是使用脚本与ActiveX交互。脚本可以是js或Vbs,但我个人喜欢使用js。在下一篇文章中,我将结合讨论在服务器端获取客户端MAC的方法。net,并比较了这些方法的优缺点。

 

 

       在做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的方法,并比较这几中方法的优劣。
 


免责声明:文章转载自《获取客户端网卡MAC地址和IP地址的几种方法(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇thinkphp5.0学习笔记(三)自定义mysql函数时报错,[Err] 1418下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mac apache配置虚拟主机

设置虚拟主机 在终端运行“sudo vi /etc/apache2/httpd.conf”,打开Apche的配置文件 在httpd.conf中找到“#Include /private/etc/apache2/extra/httpd-vhosts.conf”,去掉前面的“#”,并去掉/private,不用去private里那个设置,保存并退出。 运行“su...

IDEA 从Windows 过渡到Mac 必备快捷键对照

Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == Delete ⌦ == 向前删除键(Fn+Delete) ↑ == 上箭头 ↓ == 下箭头 ← == 左箭头 → == 右箭头 ⇞ == Page Up(Fn...

Android学习——写个小实例

学了不少基础的知识,拼一个完整点的小例子吧! 目标:完成一个与PC机互发消息的聊天程序。   首先要先试通,通讯机制。在多机互联中最常用的是网络,而网络编程中,底层的通讯机制也就是Socket。我们就想试一试用Socket来实现双机对联。先试通Socket通讯,PC机当服务器,手机当客户端。 通常,我们写PC的Socket程序时,了解到,服务器端是采用So...

mac everything的替代品——fzf使用,速度还是很快的!!!

fzf模糊搜索神器的安装和使用 fzf是一个通用的命令行模糊查找器, 通过输入模糊的关键词就可以定位文件或文件夹。结合其他工具(比如rg)可以完成非常多的工作,在工作中可以大幅提高你的工作效率。 fzf可以用于文件、命令历史记录、进程、主机名、书签、git提交等。 1. fzf使用 1.1 安装 Using Homebrew You can use...

MAC连接安卓手机通过adb指令安装apk

Android的apk可以通过adb命令来安装。在MAC电脑上,如果想通过命令行的方式给安卓手机安装apk,需要做以下操作; 一句话概括就是:将安卓SDK的adb命令添加到环境变量中,然后通过adb install方式将apk从电脑上安装到手机中。 具体操作如下: 1、点击Finder,右键选择“前往文件夹”,输入“/etc”,在“操作”中选择“显示简介”...

记录一下mac上码云的使用

项目比较多的时候用第三方的托管平台管理自己的代码还是挺不错的,记录一下码云的基本使用 分两部分进行说明: 一 :怎么上传自己本地的代码到码云。(方式,通过终端输入命令行) 具体的步骤: 1 :首先得在码云新建一个仓库,也就是一个项目。 2:然后复制这个仓库的链接。 3:打开mac终端输入:cd desktop // 表示打算把项目放在桌面。 输入完回车 4...