除了获取 MAC 地址还能干啥
以前写过一篇《在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 地址还能干啥的更多相关文章
- 在Web中获取MAC地址
很多时候都很难琢磨客户在想什么,也许是自己业务经验不足,也许是客户要显示出他在软件方面也非常的专业.记得以前听过一个故事,说一个富人想娶个媳妇,然后他比较钟意的有三个女人,然后就想从三个女人中选一个, ...
- 使用 SendARP 获取 MAC 地址(使用SendARP API函数,很多相关文章)
ARP 协议地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议.ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 3 ...
- 【转载】VC获取MAC地址的4种方法
From:http://blog.csdn.net/pdfmaker/article/details/465748 有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在 ...
- php怎么获取mac地址?
如何用php获取mac地址呢?大家知道mac地址是电脑在全球范围的唯一标识,所以这个就非常实用,比如说要做一个投票功能,那mac地址是必不可少 的,如果单纯的靠ip地址来判断这个肯定是不准确的,水分太 ...
- C# 获取MAC地址
/********************************************************************** * C# 获取MAC地址 * 说明: * 在C#中获取本 ...
- c++ windows 获取mac地址
c++ windows 获取mac地址 GetAdaptersInfo 用windows api获取mac地址和硬盘id编号 aa
- python 获取 mac 地址 的代码
python 获取 mac 地址 的例子,有需要的朋友可以参考下. #!/bin/python import os import re def GetMac(): if os.name == ...
- Java根据ip地址获取Mac地址,Java获取Mac地址
Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...
- android获取Mac地址和IP地址
获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...
随机推荐
- javascript语言学习
本课将和大家一起学习简单的js dom 操作,涵盖DOM API以及JQuery的方法. 相关简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语 ...
- 微信小程序单选/多选框样式重新
/* 重写 checkbox 样式 */ /* 未选中的 背景样式 */ checkbox .wx-checkbox-input{ border-radius: 50%;/* 圆角 */ width: ...
- 3.1 C语言_实现AVL平衡二叉树
[序] 上节我们实现了数据结构中最简单的Vector,那么来到第三章,我们需要实现一个Set set的特点是 内部有序且有唯一元素值:同时各种操作的期望操作时间复杂度在O(n·logn): 那么标准的 ...
- 在Mac平台用Sublime编辑器使用Git并连接github
近期闲来无事,学习一下Git版本控制的东西,首先是要在我的pc上学会如何向git上提交我的代码,记录一下过程以及遇到的问题. 一.Mac下Sublime Text 3整合Git 来源于一个技术教程:h ...
- < 配置jupyer notebook遇到的问题 - 500 : Internal Server Error >
< anaconda配置jupyer notebook遇到的问题 - 500 : Internal Server Error > 问题描述: 我的jupyer notebook是在anac ...
- bash_history文件怎么删除
Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易.每个在系统中拥有账号的用户在他的目录下都有一个 ...
- Spring为IOC容器注入Bean的五种方式
一 @Import导入组件,id默认是组件的全类名 //类中组件统一设置.满足当前条件,这个类中配置的所有bean注册才能生效: @Conditional({WindowsCondition.clas ...
- docker入门级详解
Docker 1 docker安装 yum install docker [root@topcheer ~]# systemctl start docker [root@topcheer ~]# mk ...
- 数据后台管理(五)AOP日志
为了增加数据的安全性,在数据管理的过程中,我们需要将操作者访问时间,操作者的名称,访问的IP,访问资源的URL,执行时长,访问方法记录下来存储到数据库中,并可以通过页面查看. 1.将日志信息存储到数据 ...
- swift 手机号、邮箱、网址等正则表达式验证
看到一个不错的swift的 手机号.邮箱.网址等正则表达式验证,分享给大家. 支持swift3,经过修改后,亲测可用! import Foundation enum Validate { case e ...