云网络智慧课堂的双网卡问题记录及解决方案

教师端

其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端。症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的可能。稍微看了下代码,可能是后续发生了问题考虑了,但是没有详细地思考如何去处理这部分的代码,导致了这里仍然很多遗留问题却没有留下TODO。我在这里修改了这部分代码。

先说流程,这部分代码流程大致如下:

1.从数据库中抓取当前服务端中当前已经记录下来的教师端的mac地址,每个mac地址已"*"分开生成一个List 。

2.获取当前本地所有的网络设备的mac地址,如果有多个状态为 up 的网络设备,则会将这部分网络设备的mac地址用|组装成一个字符串,如果只有一个设备,那么只会有一个mac地址。

3.将获取到的List 中的每个成员和2中获得的字符串比对。如果List中有这个字符串,则通过;如果List中没有这个字符串,则检查是否超限,如果超限则返回通知授权点数不足,如果未超限则将这串字符串写入数据库内。

聪明的你看到这里应该已经想到了,在这里并没有做相应的处理,而是直接将两张网卡的地址简单粗暴地塞进了数据库内。这样做的优点是可以防止用户作弊,一定要指定的网卡配上指定的机器使用才可以正确激活教师机。缺点是灵活性非常差,一台设备插上另外一张网卡那么这个设备就将直接被弃用。这是非常不合理的。

为此我重构了第3部分代码,在这里我简单叙述一下修改逻辑。

简单的来说我们给mac地址可能的情况分类,首先我们这里就不考虑当前的mac地址组字符串和List中的某个元素完全相等、mac地址组字符串和List中某个元素完全不同(所谓完全不同指的是List中任意元素和本地的mac地址组中的任意一个mac地址都不相同的情况,就是完全不同的设备配上完全不同的网卡的情况,这种情况是out的),这两者之中前者应该是理所应当的通过,后者是理所应当的不通过。

那么考虑中间的情况:

1.服务器上记录了单网卡,但本地插了双网卡。即服务器上的List只记录了本地一个mac地址,而本地却是两个mac地址组装成的mac地址组。这种情况需要通过审核,因为可能是教师插了一张新的无线网卡或者是就是要一张网卡上网一张网卡连接本地,集成网卡也是网卡。

2.服务器上记录了双网卡,但本地只插了一张网卡。即可能初始化的时候插了两个网卡,记录在List上对应的元素是一个mac地址的双网卡组合字符串,但是后续使用中可能是网卡坏了或者别的地方要用拔走了,这种情况应该也是要允许的。

3.服务器上记录了双网卡,本地也插了双网卡,但是独立网卡的mac地址不同。即可能在后续的使用中更换了无线网卡,或者是换了性能更好的独立网卡。这我们应该也是要允许用户这么操作的。

那么双网卡的问题就解决了....吗?

并不,比如二三情况组合一下我们不难猜想到,如果服务器上记录了双网卡,但本地只插了一张网卡也可以用,那这种情况用户就可以作弊了!初始化的时候插两张甚至三张网卡,然后拿这些网卡去插到别的设备上去,原本并不合法的设备此时就变得合法了(虽然我们的产品大概率是不会遇到懂这些的人,但是本着对产品负责的态度..)。

于是在2、3情况下,我们的解决方法是:用后续的情况去替换之前留在服务器上的mac地址。

比如我们服务器上记录了这台设备的双网卡,现在如果用单网卡去验证的话,那就要把之前的双网卡状态清除掉,用现在这个单网卡去替换原先的mac地址,自己跟着这个思路想想,不难算出这是能保证实际上的设备运行数量的。

这个问题姑且算解决了,但是只是面对双网卡的情况。之后如果面对更多的网卡可以尝试将集成网卡设定为唯一指定mac地址来源,我这里就不做尝试了。

学生端

学生端的问题其实类似,也是一个mac地址认证的问题。

具体参考QtResource文件夹下libNetmessage.dll文件中CheckMacAddress函数,我这里就不再赘述了

填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决的更多相关文章

  1. 网络基本概念备忘:MAC地址,端口,HTTP状态码

    MAC地址 英文MAC Address 英文全称: Media Access Control Address 别称:硬件位址 用途:定义网络设备位置 表示:十六进制数,6 Byte 特点:产品出产后M ...

  2. Android 获得本地IP地址、外网IP地址、本设备网络状态信息、本地Mac地址

    本地内网IP和外网IP的区别: 根据我的经验一台电脑需要两个ip才可以上网,一个是本地的内网ip 一个是外网的ip 本地的ip 一般是192.168.1.2这种样子  只要在不同的路由器上可以重复 外 ...

  3. CAN网络上新增加的设备与网络上已有设备MAC地址冲突的软件解决方案

    已知 1号的CAN节点的地址是0x1f 2号的CAN 节点的地址是0x1f 要达到的要求是 假设 网络上 CAN1 节点已经工作了,我现在需要在网络上接入CAN2节点. 那么CAN2节点首次上电的时候 ...

  4. 填坑...P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 难度普及/提高- 时空限制1s / 128MB 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要 ...

  5. 解决Ubuntu Server 12.04换了网卡MAC地址后 网络不可用的问题.

    重装了系统,新建了一个ubuntu虚拟机,加载原来的镜像,结果启动后网络变得不正常了,提示信息 Waiting for network configuration...Waiting up to 60 ...

  6. Hexo博客skapp主题部署填坑指南

    相信大家都很喜欢 hexo skapp 的主题,由于作者采用结巴分词,加上需要依赖各种各样的环境 所以可能大家踩过很多坑,也许每个人踩得坑不一样,这里使用 Docker 容器 centos 来部署, ...

  7. redhat 6.4 双网卡绑定

    linux系统配置 1.redhat 6.4 双网卡绑定 1)#ethtool eth* //在服务器网口接网线至笔记本,确定各网口的配置文件: 2)切换目录 #cd /etc/sysconfig/n ...

  8. Linux 双网卡绑定技术

    bond技术是在linux2.4以后加入内核. 一般步骤是1.把bonding模块加入内核, 2 编辑要绑定的网卡设置,去除地址设定 3 添加bond设备,设置地址等配置 4  重启网络 5 在交换机 ...

  9. 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...

  10. virtualbox 最小化安装centos7 配置双网卡(nat和桥接)记录----已经过期

    该文章已经过期   请参考另一篇文章:virtualbox 安装centos7 配置桥接网卡,实现主机和虚拟机互通,虚拟机可以访问外网,解决无法上网问题   先说明一下为什么要配置双网卡? 配置nat ...

随机推荐

  1. 延申三大问题中的第二个问题处理---收集查看k8s中pod的控制台日志

    1.不使用logstash 2.步骤: 2.1 先获取一个文件的日志 2.2 再获取多个文件的日志 2.3 批量获取文件日志 pod日志文件路径 [root@worker hkd-eureka]# p ...

  2. Alertmanager高可用

    为了提升Promthues的服务可用性,通常用户会部署两个或者两个以上的Promthus Server,它们具有完全相同的配置包括Job配置,以及告警配置等.当某一个Prometheus Server ...

  3. 源码学习之MyBatis的底层查询原理

    导读 本文通过MyBatis一个低版本的bug(3.4.5之前的版本)入手,分析MyBatis的一次完整的查询流程,从配置文件的解析到一个查询的完整执行过程详细解读MyBatis的一次查询流程,通过本 ...

  4. 洛谷P2168 [NOI2015] 荷马史诗 (哈夫曼树)

    学了哈夫曼树这道题还是好想的,基本上和构造哈夫曼树的思路一样,但是题目要求最长si的最小值,所以用两个关键字的堆,第一关键字是把出现次数作为权值,第二关键字表示从该节点开始的最长长度,权值相同时,选择 ...

  5. 2021 CCPC 威海站 VP记录(题解)

    2021 CCPC 威海站 VP记录(题解) 题目顺序为vp时开题顺序: A - Goodbye, Ziyin! 签到,连边数小于等于2的可以作为二叉树根,若有大于4的直接输出0. code: voi ...

  6. 一键体验 Istio

    背景介绍 Istio 是一种服务网格,是一种现代化的服务网络层,它提供了一种透明.独立于语言的方法,以灵活且轻松地实现应用网络功能自动化.它是一种管理构成云原生应用的不同微服务的常用解决方案.Isti ...

  7. 开源数字基础设施 项目 -- Speckle

    [Speckle](https://speckle.systems/)是用于 3D 设计的任何东西的开源数字基础设施.处理软件孤岛.实时协作.数据管理.版本控制和自动化之间的互操作性.致力于构建一个开 ...

  8. 19.-哈希算法&注册登录

    一.哈希算法 哈希: 给定明文-计算出一段定长的-不可逆的值 定长输出:不管明文输入多少,哈希都是定长的 不可逆:无法反向计算出对应的明文 雪崩效应:输入改变,输出必然变 md5:32位16进制   ...

  9. vue3+element-plus+登录逻辑token+环境搭建

    vue3+element-plus+登录逻辑token环境搭建 安装脚手架工具 1 npm i @vue/cli@4.5.13 -g 验证是否安装成功 1 vue -V # 输出 @vue/cli 4 ...

  10. visual studio插件开发-Menu

    工欲善其事,必先利其器,作为程序员我们很大部分时间在和ide打交道,好的插件可以大大提高我们的编程效率,我开发过几个vs插件来解决一键生成dbmodels,快速部署到服务器,总结下来最关键的还是对于M ...