以前写过一篇《在Web中获取MAC地址》的文章,文章的地址是:https://www.cnblogs.com/tosser/p/9022187.html,我当时使用 OCX 来实现,可是 OCX 只支持 IE 浏览器,后来在往上找了一个 Chrome 的扩展,也解决了该问题。不过,总觉得无论使用 OCX 还是使用 Chrome 的扩展,都是浏览器相关的,并不通用。后来,使用 Socket 写了一个简单的 DEMO,用来模拟 HTTP 服务器,然后使用 Ajax 进行通信,问题解决了。也不再是浏览器相关了。

Web 页面获取 MAC 地址的设计思路

Web 页面获取 MAC 地址的设计思路是比较简单的,只需要在本地模拟一个 HTTP 服务器,然后让 Web 页面通过 Ajax 来请求 HTTP 服务器,HTTP 服务器直接返回本机的 MAC 地址就可以了。

具体流程如下图:

流程图非常的清楚,主要就是 HostServer 和 Ajax 的通信,这样就可以得到 MAC 地址,然后通过 DOM 操作,即可把 MAC 地址写入到 input 框中。这样,就可以和用户名、密码一起提交给服务器进行验证了。

除了获取 MAC 地址还能干啥

之前做过一个物流提货的项目,涉及到一些硬件设备,包括:小票打印机、刷卡器(身份证、银联卡)、进币器、密码数字键盘等。这些设备、电脑主机和显示器在一个类似 ATM 机那样的机柜中(其实就是 ATM 机的设备,本身这套东西就是银行提供的)。

操作这些硬件的接口厂家提供了一个 OCX,而整个项目是 B/S 架构的。那么,在客户端想要操作这些硬件,就要调用 OCX,而 OCX 只能在
IE 浏览器下使用(Chrome、FireFox 是不支持 OCX 的)。众所周知,IE 对 Web 并不友好,但是如何又能在不使用 IE
的情况下,又去调用 OCX 来完成操作硬件的功能呢?那么就是我们上面的方法了。

简单的描述一下,就不贴图了。

在终端上放一个 HostServer 用来接受页面中 Ajax 的请求,并根据请求去调用 OCX 中相应的功能,把 OCX 的返回信息,再以 Json 的格式返回给 Ajax 即可。

这样,把 浏览器 和 OCX 文件进行了分离,中间加入了一个 HostServer,页面 和 OCX 的通信通过了
HostServer,那么以后如果接口是 DLL 文件,也可以通过 HostServer 来进行完成,当然,还可以完成更多的功能。

总结

其实整个获取 MAC 地址的功能,对于登录页面而言是一个服务端,它在本地是一个可执行的程序,那么它和普通的 EXE
文件是没有区别的,那么它能完成的功能其实远远不是获取一个 MAC
地址的功能,对于上面的例子来说,把服务的提供者和使用者进行了分离,而且针对于本机的扩展也十分的方便了。当然,如果你愿意的话,可以让
HostServer 充当客户端直接和后端的服务器进行通信而不通过浏览器,这样是不是还能做一些让用户没有感知的事情?


我的微信公众号:“码农UP2U”

除了获取 MAC 地址还能干啥的更多相关文章

  1. 在Web中获取MAC地址

    很多时候都很难琢磨客户在想什么,也许是自己业务经验不足,也许是客户要显示出他在软件方面也非常的专业.记得以前听过一个故事,说一个富人想娶个媳妇,然后他比较钟意的有三个女人,然后就想从三个女人中选一个, ...

  2. 使用 SendARP 获取 MAC 地址(使用SendARP API函数,很多相关文章)

    ARP 协议地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议.ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 3 ...

  3. 【转载】VC获取MAC地址的4种方法

    From:http://blog.csdn.net/pdfmaker/article/details/465748 有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在 ...

  4. php怎么获取mac地址?

    如何用php获取mac地址呢?大家知道mac地址是电脑在全球范围的唯一标识,所以这个就非常实用,比如说要做一个投票功能,那mac地址是必不可少 的,如果单纯的靠ip地址来判断这个肯定是不准确的,水分太 ...

  5. C# 获取MAC地址

    /********************************************************************** * C# 获取MAC地址 * 说明: * 在C#中获取本 ...

  6. c++ windows 获取mac地址

    c++ windows 获取mac地址 GetAdaptersInfo 用windows api获取mac地址和硬盘id编号 aa

  7. python 获取 mac 地址 的代码

    python 获取 mac 地址 的例子,有需要的朋友可以参考下. #!/bin/python import os import re def GetMac():     if os.name ==  ...

  8. Java根据ip地址获取Mac地址,Java获取Mac地址

    Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...

  9. android获取Mac地址和IP地址

    获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...

随机推荐

  1. 基于STL的堆略解

    什么是STL 以下内容摘自这儿. STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Le ...

  2. [Luogu3065][USACO12DEC]第一!First!

    题目描述 Bessie has been playing with strings again. She found that by changing the order of the alphabe ...

  3. 5分钟读懂Linux权限管理

    权限管理: 本文用于初学者对Linux文件系统权限的快速了解!! 进程安全上下文:   进程对文件的访问权限应用模型:     进程的属主与文件的属主是否相同:如果相同,则应用属主权限:      否 ...

  4. maven 打包 spring boot 生成docker 镜像

    1.所使用材料 ,spring boot 项目 基于maven ,maven 工具, docker工具 ps:为啥使用 docker 公司微服务需要启动太多,有两个优点吧! 1.方便管理,2.减少服务 ...

  5. C++ 大作业资料总结

    一般 C++ 大作业都是用 Qt 来写,Qt 本身带了很多例子,详见:https://doc.qt.io/qt-5/qtexamples.html# 如果你想偷懒的话,直接拿来改就好,或者去 Gith ...

  6. 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

    <利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...

  7. Dockerfile 指令详解

    GitHub Page:https://blog.cloudli.top/posts/Dockerfile-指令详解/ FROM FROM 命令指定基础镜像.在构建镜像时,基础镜像必须指定,因此在 D ...

  8. MySQL、Oracle、SqlServer的区别

    鉴于和数据库打交道日益频繁,遂决定写一篇关于Oracle.SqlServer.MySQL区别的个人观点. MySQL是大学时的主要学习对象,但刚参加工作时转到了SqlServer,现在主要接触的是Or ...

  9. Node配合WebSocket做多文件下载以及进度回传

    起因 为什么做这个东西,是突然间听一后端同事说起Annie这个东西,发现这个东西下载视频挺方便的,会自动爬取网页中的视频,然后整理成列表.发现用命令执行之后是下面的样子: 心里琢磨了下,整一个界面玩一 ...

  10. 医生智能提醒小程序数据库设计心得——Legends Never Die

    数据库设计心得 根据我们小组数据库设计的整个流程,我们将整个数据库设计划分为两个具体的阶段,在每个阶段需要进行不同的准备,有不同的注意事项,接下来我们将结合在数据库设计过程中遇到的一些问题和困难,提出 ...