之前写过一篇《在Web中获取MAC地址》的文章,文章的地址是:https://www.cnblogs.com/tosser/p/9022187.html,我当时使用 OCX 来实现,但是 OCX 只支持 IE 浏览器,后来在往上找了一个 Chrome 的扩展,也解决了该问题。不过,总以为不管使用 OCX 仍是使用 Chrome 的扩展,都是浏览器相关的,并不通用。后来,使用 Socket 写了一个简单的 DEMO,用来模拟 HTTP 服务器,而后使用 Ajax 进行通讯,问题解决了。也再也不是浏览器相关了。html
Web 页面获取 MAC 地址的设计思路后端
Web 页面获取 MAC 地址的设计思路是比较简单的,只须要在本地模拟一个 HTTP 服务器,而后让 Web 页面经过 Ajax 来请求 HTTP 服务器,HTTP 服务器直接返回本机的 MAC 地址就能够了。
浏览器
具体流程以下图:服务器
流程图很是的清楚,主要就是 HostServer 和 Ajax 的通讯,这样就能够获得 MAC 地址,而后经过 DOM 操做,便可把 MAC 地址写入到 input 框中。这样,就能够和用户名、密码一块儿提交给服务器进行验证了。
微信
除了获取 MAC 地址还能干啥架构
以前作过一个物流提货的项目,涉及到一些硬件设备,包括:小票打印机、刷卡器(身份证、银联卡)、进币器、密码数字键盘等。这些设备、电脑主机和显示器在一个相似 ATM 机那样的机柜中(其实就是 ATM 机的设备,自己这套东西就是银行提供的)。
spa
操做这些硬件的接口厂家提供了一个 OCX,而整个项目是 B/S 架构的。那么,在客户端想要操做这些硬件,就要调用 OCX,而 OCX 只能在 IE 浏览器下使用(Chrome、FireFox 是不支持 OCX 的)。众所周知,IE 对 Web 并不友好,可是如何又能在不使用 IE 的状况下,又去调用 OCX 来完成操做硬件的功能呢?那么就是咱们上面的方法了。设计
简单的描述一下,就不贴图了。htm
在终端上放一个 HostServer 用来接受页面中 Ajax 的请求,并根据请求去调用 OCX 中相应的功能,把 OCX 的返回信息,再以 Json 的格式返回给 Ajax 便可。
blog
这样,把 浏览器 和 OCX 文件进行了分离,中间加入了一个 HostServer,页面 和 OCX 的通讯经过了 HostServer,那么之后若是接口是 DLL 文件,也能够经过 HostServer 来进行完成,固然,还能够完成更多的功能。
总结
其实整个获取 MAC 地址的功能,对于登陆页面而言是一个服务端,它在本地是一个可执行的程序,那么它和普通的 EXE 文件是没有区别的,那么它能完成的功能其实远远不是获取一个 MAC 地址的功能,对于上面的例子来讲,把服务的提供者和使用者进行了分离,并且针对于本机的扩展也十分的方便了。固然,若是你愿意的话,可让 HostServer 充当客户端直接和后端的服务器进行通讯而不经过浏览器,这样是否是还能作一些让用户没有感知的事情?
个人微信公众号:“码农UP2U”