摘要 本文分析了现行的计算机网络教学系统的功能与特点,提出了一种应用Windows API函数构建计算机网络监控教学系统的技术方案。
关键词 计算机网络教学系统 程序终止 窗口拦截,钩子函数,API函数,IP收集,Socket通讯
1 多媒体网络教学系统的现状
近年来,多媒体网CAI将多媒体信息教学,并通过计算机的网络功能,使分布于不同地方的老师和学生同时置于一个“虚拟教室”中进行教学活动,老师和学生在计算机旁就可同时完成语音教室,电脑教室,模拟实验室等多种功能。它不仅能提供教师和学生以文字、图形、图象、动画等数据信息的交互,而且能通过多媒体通信网的支持,提供语音、视频信号的交互。通过计算机局域网和1ntemet,教师和学生不但可以共享本地的多媒体教学资源,甚至可以实现远程教学和全球教学资源共享。
2 国内几种典型多媒体网络教学系统
在我国,利用网络进行教学还只是刚刚起步。我国通向二十一世纪的信息高速公路示范工程“中国教育和科研计算机网(CERNET)”已初步形成包括全国主干网、地方网和校园网三个层次结构的网络,为网络教学提供了良好的基础设施。同时,一些教学局域网络的研究也正在进行之中,目前在国内较有影响的多媒体网络教学系统有:台湾艾康公司的Hic1ass,南京远志资讯公司的LanStar,灯塔科技公司的wmschoo1,武汉开达公司的新教室等。这些系统都局限在计算机房、教室或一栋教学楼内,能完成基本的教学功能,又各有其特色。
按实施方案分,这些系统可分为三类:纯软件方式,纯硬件方式和软硬件结合方式。这里三种较有代表性的系统作一个简要的分析。
1).南京远志资讯公司的LanStar多媒体网络教学纯软件版:只需一套软件安装到网络服务器上,即可实现多媒体网络教学的全部功能。无需添加任何硬件设备和额外布线,系统安装和维护方便,易于扩充功能和升级。其主要缺点是:在已建成的低速网络上实现时实时性较差,系统兼容性不好。
2).武汉开达公司的新教室多媒体网络教学系统:采用纯硬件方案实现,每个用户机都需添加影音传输卡与传输通道。它能支持任何网络系统,无需任何驱动程序,无内存驻留程序,兼容性好,能达到影音的实时同步传输。其主要缺点是:音频无交互功能,系统功能较简单。
3).台湾艾康公司的Hiclass多媒体网络教室:采用软硬件结合方式。其主要控制功能通过教师机控制台完成,学生机内有驻留的程序完成本机的某些控制功能,使用外置式影音传输盒与相应通道。它较好的将软、硬件的优势结合在一起,是目前国内较先进的多媒体网络教学系统,但学生机内的驻留程序未充分考虑与UCDOS等中文系统的兼容性,实际使用效果并不理想,在国内的推广面不大。
3 问题的提出
通过以上几种多媒体网络教学系统的比较,我们发现各有利弊。功能都很强大,使用也很方便,都具备网络监控的功能,但是教师无法设定学生要限制运行的程序,管理起来比较费时费力,难以自动管理,本文就如何应用API函数在网络中实现自动控制方案进行一些简单地探讨。
4 构建系统平台的技术方案
4.1 IP收集方案:
调用Windows 9X/NT自带的ICMP.dll动态链接库来测试网络的连通性,从而实现网络扫描(即查找某个网络上正在运行的所有主机的IP地址,甚至主机名,这里仅讨论不含防火墙的主机,如果含有防火墙,则反馈防火墙的IP地址,无法取得网络中真实主机的IP地址)。与Icmp.dll相关联的三个API函数分别为:
IcmpCreateFile打开一个ICMP句柄,以便发送ICMP回波请求;
IcmpCloseHandle函数关闭有IcmpOpenFile函数打开的一个Icmp句柄;③IcmpSendEcho函数发出一个Icmp回波请求,并等待接受一个或多个回波应答。
另外利用GetHostByAddr函数可以解析主机名,反过来也可以使用GetHostByName函数根据主机名字解析出IP地址,关于如何取得网络中的主机名,可以用低层网络接口NetBios实现,具体应用方法请查阅相关资料,这里不再赘述。
还有可以调用Net命令中的NetView显示主机列表,然后用Ping命令测试IP地址。
4.2 拦截技术方案:
方案一:直接修改代码法:
利用GetProcAddress获取内存中的地址,并保存该命令(进程)的头几个字节的指令,用一个JMP或INT汇编指令改写头几个字节,这样就是线程调用到某一个我们设定的进程中,从而实现了非法进程的分所拦截功能。
方案二:移动代码法:
利用AllocCStoDSAlias移动代码段专门工具对Exe程序代码段进行处理,或者应用修改中断向量表IDT法和安装调用门LDT法修改代码。
方案三:Windows 钩子函数法:
应用Windows的钩子函数也可以实现所有进程关联,函数SetWindowsHookEx具体用法请查阅相关资料,这里不再赘述。
方案四:Windows API函数枚举法:
应用Windows API 函数EnumWindows 遍历查找窗口,用GetWindowText取所有窗口的标题,根据取得的窗口标题列表来判断其中是否存在要限制的程序的标题,如果有,则通过SendMessageA发送终止命令消息,从而实现了程序进程的拦截与终止技术。
方案五:互斥向量法:
利用API函数OpenMutex函数检查指定名字的互斥向量存在,应用ReleaseMutex函数释放互斥量的所有权。相关函数的原型为:
HANDLE OpenMutex(DWORD dwDescriedAccess,Bool binheritHanle,LPCTSTR lpName);
Bool ReleaseMutex(HANDLE hMutex);
4.3 关闭限制程序方案:
应用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
消息,如果没有响应,终止程序
4.4 客户端监控程序的自动运行方法:
通过修改注册表选项,实现监控程序的自动运行,具体方法
HKEY_LOCAL_MACHINE“SoftWare“Microsoft“Windows“CurrentVersion“Run
每次Windows启动时都运行,即使注销后在登录也运行相关程序
HKEY_LOCAL_MACHINE“SoftWare“Microsoft“Windows“CurrentVersion“RunOnce
系统启动时只运行一次,注销后不再启动
HKEY_LOCAL_MACHINE“SoftWare“Microsoft“Windows“CurrentVersion“RunServiceOnce
系统启动时运行,作为服务进程运行
4.5 客户端监控程序的隐藏自己方法:
由于Windows NT和Windows2000并没有提供RegisterServiceProcess函数,故本方法仅在Windows 9X平台有效。在Windows 9X下通过RegisterServiceProcess让程序在运行时不要出现在Windows “关闭程序”窗口中,避免了用户将客户端监控程序强行终止掉。
4.6 服务器端与客户端的连接:
应用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, Process32Next等显示系统中所有正在运行的进程,并显示其相关信息。
5 结论
应用Windows API函数构建的计算机网络监控教学系统不仅克服了已往硬件多媒体教学系统的价格性能比高,浪费系统资源,难以维护的缺陷,同时也克服了软件多媒体教学系统的无法自适应监控的缺陷,它利用计算机现有的操作系统平台,直接捕捉系统进程,巧妙地通过进程标志,使用软件拦截、程序中断技术,使得教学系统平台内的客户机无法自主运行程序,保障了教学秩序正常进行。
教学计算机辅助教学对教学的重要意义已经得到越来越多的人的承认,随着计算机技术的进一步发展,多媒体和网络技术进入教室已成为一种必然趋势。国家教育部及有关部门已把多媒体教学作为面向二十一世纪教育改革的一个重要内容。
参考文献
1.Windows高级程序设计 , [美]MartinHeller着;朱鸿隽,王劲译 , 电子工业出版社 1994.11 , TP311/35
2.Windows C程序设计入门与提高 , 柳永新等编着 , 清华大学出版社 1999.6 , TP312C/89
3.Windows程序设计(第5版)上册 , (美)CharlesPetzold着 , 北京大学出版社 1999.11 , TP316.7/60:1
4.Windows程序设计(第5版)下册 , (美)CharlesPetzlod着 , 北京大学出版社 1999.11 , TP316.7/60:2
5.Windows程序设计 , 张之超等编着 , 人民邮电出版社 1998.11 , TP316.7/64
6.Windows Sockets网络程序设计大全 , 蒋东兴等编着 , 清华大学出版社 1999.4 , TP393/117
7.Windows程序设计 , 管建和,夏军宝编 , 人民邮电出版社 2002 , TP316.7/194
8.Windows CE应用程序设计 , 田东风编着 , 机械工业出版社 2003 , TP316.7/241
9.API for Windows 2000/XP详解(配光盘) , 张桂勇,陈芳琼编着 , 清华大学出版社 2004.4
10.微机应用与维护电脑编程 杂志