- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机实验室学生上机操作监控系统研究和实现
计算机实验室学生上机操作监控系统研究和实现
摘要:在研究以往监控程序和高职学生上机过程的基础上,提出了一个改进的研究方法。介绍了实验机房学生机的监控程序的编写,自动关闭非课堂安排的程序进程,并将学生的上机记录保存到服务端。
关键词:监控程序 程序进程 系统进程快照 通信程序 后台运行
中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2011)07-0034-03
高职院校在人才培养目标中都把学生动手能力的培养作为主要目标。学生动手能力的培养主要不是靠课堂理论教学,而主要通过实习操作等实践性教学环节来保证,对于软件开发类、图形图像、动漫等课程来说都离不开上机这个环节。
随着网络和软件业的发展,现在的PC机不仅仅是学习、开发的工具,而且还是娱乐消遣的工具,你可以用它听音乐、看电影、上网等。现在很多学生由于年轻、抵不住PC 机的这些诱惑,利用上机实验的时间听音乐、看电影、上网等,而且他们做这些时极具有隐蔽性、指导教师不易发现。为了保证有好的教学效果,需要指导教师对学生实验的监督力度要加强。
本系统分成服务端和客户端,但是对服务端和客户端的功能分配和实现有所改进和优化。本系统的流程图简化如图1:
服务端安装在教师机或管理员的教师机上面(内存最好要大点),客户端安装在学生机上面,然后组装成一个局域网。服务端实现的功能初步规划如下:管理员登录、学生信息管理、群发文件、客户端进程允许列表设置、实时监控管理、教师演示及录制、学生演示、屏幕监控、电子点名、遥控辅导、发送提醒信息等等;客户端实现的功能初步规划如下:学生注册及登录、作业提交、发送请求操作、举手提问、录制教学视频等等。由于篇幅关系,本文只对服务端如何与客户端通信及服务端如何控制和监控客户端程序进程进行归纳和总结。
设计和实现思路:监控程序运用Visual Studio开发工具开发,选择WIN32应用程序类型。监控程序实现了自启动,运行于后台,与服务器保持通信。
实现过程:学生机启动后,监控程序自动启动运行于后台,接收服务器端的消息,得到可以打开的应用程序运行列表。在实验的过程中,每100秒监控计算机所打开的应用进程一次,当发现一个不在集合列表中的应用程序进程打开时,监控程序自动关闭进程程序,并将学生的上机情况传送到服务器端,存储于服务器的数据库中,供以后作学生平时成绩统计、教师教学评估使用。
下面详细讲解其实现过程:
1、程序设计过程
在VC中通过Win32 Application-〉A Simple Win32 application建立一个工程,取名为cli。打开 winmain()函数,按以下过程完成各项功能。
(1)建立一个scoke,接收服务器信息,即学生实验可打开的应用程序集,保存在一个字符串中。
(2)用 SetTime()先添加一个计时器对象。将uElapse参数设置为100000,即每100秒监控一次。
(3)然后在while(GetMessage())语句中实现监控与处理。监控中,先发现用户打开的应用程序窗口,再依次得到应用的进程ID和应用程序名,如果是非指定的程序,则上报服务器,同时自动关闭进程。
(4)自启动的实现。
2、服务器端与客户端通信实现
Windows下编写网络应用程序大都利用socke进行数据通信,包括客户端和服务器端编写,本文主要探讨客户端程序的编写。客户端编写遵守以下过程:
(1)创建客户套接字(CREATE)。
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
(2)与远程服务器进行连接(CONNECT)。
SOCKADDR_IN addrSrv;
//为便于调试,取服务器IP为127.0.0.1,建立应用时再修改为服务器的IP。
addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)addrSrv,sizeof(SOCKADDR));
(3)开始数据传输,发送(SEND)接收(RECEIVE)。
char recvBuf[255];
recv(sockClient,recvBuf,100,0);
send(sockClient,本机IP+应用程序名+时间,strlen(发送串)+1,0);
(4)关闭套接字(CLOSE SOCKET)。
closeso
文档评论(0)