大家好啊!
  
我正在做毕业设计,是一个用java开发,B/S架构的程序课程辅助考试系统。
该系统是打算使用在学院机房里的的,60几台机子。因为系统要实现防替考的功能,我的想法是:
1、一个考生账号从一台机子上登录后,就不能在别的机子上重新登陆;
2、一台机子登陆了一个考生的账号后,就不能再登陆别的考生账号。
这样,只要考完试的考生不能离开自己的座位,打开别的机子,那他就不能登录其他学生的账号替别人考试。很明显,要实现这样的功能,涉及到识别出学院局域网中某一台机子的问题。
识别方式目前我了解的有:通过ip;通过MAC;通过UUID,java都可以获取这三种数据虽然局域网一般是使用固定ip,但这种ip是很容易改的,在网上邻居的相关设置中,只需要把最后一个数字改成2-255之间的任何一个,同时不与其他机子冲突就可以了。因此这种防替考方式不太可靠。然后是MAC,虽然每张网卡的MAC都不一样,但是从网卡发出,在网络中传输的数据包中的源MAC地址,不是从网卡读取的,而是从该机器的注册表上获取的,注册表上的MAC是在window系统安装时,从网卡中读取并保存的,因此只要修改了注册表上的MAC,也就能报销掉我的防替考策略了,虽然这种修改有点难度,像我们这种普通学生不太可能做得出来...至于UUID,看了网上的资料,还不是很了解,貌似有一个UUID仅在一台机子上是唯一的,在多台机中就不一定唯一这种说法,也不太确定UUID到底是标识计算机唯一性还是标识文件唯一性的,另外就知道UUID字符串很长我了解到的就这么多了,不知道还有没有别的方式。现在我的问题是,结合该考试系统的实际使用环境,以及使用人群,实现防替考有什么好方法?识别出机房中某一台机器有什么“够用”的方法?不要“杀鸡用牛刀”的绝对完美方法,只需要刚好能够适应实际情况的方法,让我在答辩时对于这个问题不至于被老师狠狠刁难。谢谢!
  

解决方案 »

  1.   

    同时使用IP和mac地址,也就是说把他们绑定。道高一尺魔高一丈,完全避免是不可能的,你把标识的问题解决了,人家还可以通过远程桌面来替考呢。
      

  2.   

    远程桌面可以关了,为考生们新建一个组限制权限,禁止访问组策略 注册表,然后你可以用MAC地址来了
      

  3.   

    在局域网,用mac地址来管理好了,........
      

  4.   

    楼主是不是想的太复杂了,机房里的机器应该都有编号标签。贴在机器上的。可以根据这个加上登录ID加上你自己的一个算法来生成登录码,如果登录ID相同,而登录码不同,则该考生在另外一台机器上登录;其实计算机上除了网卡还有很多其他设备,硬盘ID就是个不错的选择,不过得写点底层的代码。不过对于楼主来说应该是小菜。