API函数在网络教学管理监控系统实现中的应用
2009-10-19戴靓婕王希
戴靓婕 王 希
[摘要]提出一种应用Windows API函数构建计算机网络监控教学系统的技术方案。
[关键词]计算机网络教学系统 程序终止 窗口拦截 钩子函数 API函数 IP收集 Socket通讯
中图分类号:O29文献标识码:A文章编号:1671-7597(2009)0910115-02
一、网络教学系统的现状
近年来,通过计算机的网络功能,使分布于不同地方的老师和学生同时置于一个“虚拟教室”中进行教学活动,老师和学生在计算机旁就可同时完成语音教室,电脑教室,模拟实验室等多种功能。它不仅能提供教师和学生以文字、图形、图象、动画等数据信息的交互,而且能通过多媒体通信网的支持,提供语音、视频信号的交互。通过计算机局域网和1ntemet,教师和学生不但可以共享本地的多媒体教学资源,甚至可以实现远程教学和全球教学资源共享。
二、问题的提出
通过对多媒体网络教学系统的比较,我们发现各有利弊。功能都很强大,使用也很方便,都具备网络监控的功能,但是教师无法设定学生要限制运行的程序,管理起来比较费时费力,难以自动管理,本文就如何应用API函数在网络中实现自动控制方案进行一些简单地尝试。
三、多媒体网络教学系统的架构
物理实体层:体现为实现多媒体网络的各种物理实体。就一个教室而言,包括服务器、教师用机、学生用机、网络设备;就编辑中心而言,包括视频采集卡、录像机、数码相机、扫描仪、多媒体编辑和图形、动画工作站等。
网络层:相当于OSI的数据链路层、网络层和传输层。它们为高层应用提供可靠的网络保证。
多媒体网络层:由于一般网络层较难支持对多媒体的实时传输,因此我们在此基础上再附一层,这是一个面向实时传输和QOS的层次,使上层能透明调用。
编辑制作层:网络教学内容编辑器是一个基于网络的在线收集、分类、编辑软件系统,可以对课件的总体框架进行构思,同时应有提纲描述语言到课件语言的自动转换工具。课件应有自己的文件描述语言,同时课件编辑器应是一个可视化的编辑环境,除了表现手段外,课件编辑系统还应能很方便地表示控制流,并能实现面向对象的课件编辑。
教学环境层:处于最顶层的教学环境是基于Client/Server(Browser
/Server)的分布式系统,它能完成以下功能:异步(当然也能同步)地为每个学生提供相同或不同的课件学习服务;保持对学生学习过程的记录;感知学生当前的学习状态和遇到的困难,并能对常见问题进行分析、引导、提示。
四、构建系统平台的技术方案
(一)IP收集方案
调用Windows自带的ICMP.dll动态链接库来测试网络的连通性,从而实现网络扫描(即查找某个网络上正在运行的所有主机的IP地址,甚至主机名,这里仅讨论不含防火墙的主机,如果含有防火墙,则反馈防火墙的IP地址,无法取得网络中真实主机的IP地址)。与Icmp.dll相关联的三个API函数分别为:1.IcmpCreateFile打开一个ICMP句柄,以便发送ICMP回波请求;2.IcmpCloseHandle函数关闭有IcmpOpenFile函数打开的一个Icmp句柄;3.IcmpSendEcho函数发出一个Icmp回波请求,并等待接受一个或多个回波应答。
另外利用GetHostByAddr函数可以解析主机名,反过来也可以使用GetHostByName函数根据主机名字解析出IP地址,关于如何取得网络中的主机名,可以用低层网络接口NetBios实现,具体应用方法请查阅相关资料,这里不再赘述。
还有可以调用Net命令中的NetView显示主机列表,然后用Ping命令测试IP地址。
(二)拦截技术方案
方案一:直接修改代码法
利用GetProcAddress获取内存中的地址,并保存该命令(进程)的头几个字节的指令,用一个JMP或INT汇编指令改写头几个字节,这样就是线程调用到某一个我们设定的进程中,从而实现了非法进程的分所拦截功能。
方案二:移动代码法
利用AllocCStoDSAlias移动代码段专门工具对Exe程序代码段进行处理,或者应用修改中断向量表IDT法和安装调用门LDT法修改代码。
方案三:Windows钩子函数法
应用Windows的钩子函数也可以实现所有进程关联,函数SetWindows
HookEx具体用法请查阅相关资料,这里不再赘述。
方案四:Windows API函数枚举法
应用Windows API 函数EnumWindows 遍历查找窗口,用GetWindowText
取所有窗口的标题,根据取得的窗口标题列表来判断其中是否存在要限制的程序的标题,如果有,则通过SendMessageA发送终止命令消息,从而实现了程序进程的拦截与终止技术。
方案五:互斥向量法
利用API函数OpenMutex函数检查指定名字的互斥向量存在,应用ReleaseMutex函数释放互斥量的所有权。相关函数的原型为:
HANDLE OpenMutex(DWORD dwDescriedAccess,Bool binheritHanle,
LPCTSTR lpName);
Bool ReleaseMutex(HANDLE hMutex);
(三)关闭限制程序方案
应用API函数ExitWindowsEx实现计算机管理。ExitWindowsEx原型为:
Bool ExitWindowsEx(UNIT uflags,DWORD dwReserved);
其中uflags的参数如下:
EXW_LOGOOFF 注销当前用户
EXW_POWEROFF 关闭系统切断电源
EXW_REBOOT 重新启动
EXW_SHUTDOWN关闭计算机
dwReserved的参数如下:
EWX_FORCE强行关闭计算机
EWX_FORCEIFHUANG系统发送
WM_QUERYENDSESSION和WM_ENDSESSION 消息,如果没有响应,终止程序
(四)客户端监控程序的自动运行方法
通过修改注册表选项,实现监控程序的自动运行,具体方法如下:
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRun
每次Windows启动时都运行,即使注销后在登录也运行相关程序
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRunOnce
系统启动时只运行一次,注销后不再启动
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRunServiceOnce
系统启动时运行,作为服务进程运行
(五)客户端监控程序的隐藏自己方法
由于Windows NT和Windows2000并没有提供RegisterServiceProcess
函数,故本方法仅在Windows 9X平台有效。在Windows 9X下通过Register
ServiceProcess让程序在运行时不要出现在Windows “关闭程序”窗口中,避免了用户将客户端监控程序强行终止掉。
(六)服务器端与客户端的连接
应用Windows Socket API函数实现服务器与客户端的相互通讯,Windows Socket又可以通过下层的网络通讯协议功能和操作系统调用实现通讯操作。使用UDP协议建立无连接的服务后,向指定IP地址收发数据。初始化过程分三步实现,分别为:
创建本地连接套接口
Create(PortAddress,SOCK_DGRAM,LocalIpAddress);
原型为
Bool Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,
LPCTSTR lpszSocketAddress=NULL);
绑定本地连接套接口
Bind(PortAddress, LocalIpAddress);
定时器设定
SetTimer(Timersymbol,Interval,NULL);
利用ReceiveFrom函数接收数据,Sendto函数发送数据,OnTimer函数监视。
利用API函数CreateToolHelp32Snapshot,Process32First, Process
32Next等显示系统中所有正在运行的进程,并显示其相关信息。
五、结论
应用API函数构建的计算机网络监控教学系统不仅克服了已往硬件多媒体教学系统的价格性能比高,浪费系统资源,难以维护的缺陷,同时也克服了软件多媒体教学系统的无法自适应监控的缺陷,它利用计算机现有的操作系统平台,直接捕捉系统进程,巧妙地通过进程标志,使用软件拦截、程序中断技术,使得教学系统平台内的客户机无法自主运行程序,保障了教学秩序正常进行。
教学计算机辅助教学对教学的重要意义已经得到越来越多的人的承认,随着计算机技术的进一步发展,多媒体和网络技术进入教室已成为一种必然趋势。国家教育部及有关部门已把多媒体教学作为面向二十一世纪教育改革的一个重要内容。
参考文献:
[1]蒋东兴等编著,Windows Sockets网络程序设计大全,清华大学出版社,1999.4,TP393/117.
[2]柳永新等编著,Windows C程序设计入门与提高,清华大学出版社,1999.6,TP312C/89.
[3](美)CharlesPetzold著,Windows程序设计,北京大学出版社,1999.11,TP316.7/60:1.
[4]张桂勇、陈芳琼编著,API for Windows 2000/XP详解(配光盘),清华大学出版社,2004.4.