论文部分内容阅读
在信息技术课的教学和考试中经常需要共享制作素材、收发文件。大多数教师习惯用直接共享文件夹的方法,这种方法虽然简单易行,但是保密性差,学生之间能相互抄袭,相互删改。有些教师通过IIS创建FTP服务器或BBS论坛面向用户收发文件,这种方法使用B/S架构,有很多优点,但学生的操作繁琐,且不能实时保存到服务器(只能先保存到本机后再上传)。也有部分教师使用电子教室软件附带的收发文件功能,其收发文件的过程无需学生的干预,收发准确、快速、稳定。但这种做法同样具有不能实时保存到服务器的弊端,无身份识别的功能,只能面向特定的学生机收发而不是面向特定的学生。收发的操作全部在服务器端进行,非常繁琐,容易误操作,更不可能连续几节课自动收发。本文介绍学生个人“网络盘”可以实现共享素材和收发文件,保密性高,稳定安全且操作简单方便。
一、“网络盘”的设计思路
使用Windows可以将局域网内其他计算机的共享文件夹映射成网络驱动器,即所谓的“网络盘”。网络盘的操作方法跟本地盘是完全一致的,网络盘中的文件可直接存取。而在VB中调用相应的API函数,可以在服务器端自动设置或取消文件夹的共享,也可以在学生机端自动映射或断开网络盘。因此,可以设计程序在服务器端按学生名单自动批量制作各个学生的个人文件夹,并设置隐藏的加密共享。学生机使用客户端程序验证学生身份后,便能自动将服务器中的特定个人文件夹映射成网络驱动器,如图1所示。
具体的操作流程:
1.(服务器)面向某些班级制作各个学生的个人文件夹,并将其设为加密隐藏的共享。
2.(学生机)登录,验证学生身份。
3.(学生机)登录成功,屏幕右下方显示网络盘操作面板。
4.(学生机)“我的电脑”出现一个网络盘(X:)如图2所示。
5.(学生机)打开网络盘(X:),看到服务器制作好的文件(夹),可以直接实时编辑这些文件(夹)。
对于学生而言,登录之后只是多了一个硬盘分区,无需再说明其他的操作方法。服务器端程序可管理学生名册,增删网络盘及其中的文件。客户端程序可验证学生身份,自动映射或断开网络盘,监测网络盘内的文件类型及总容量,并可帮助学生在退出网络盘后自动关机或重启。学生无法进入他人的网络盘,在使用网络盘的过程中也不能自行断开网络盘,不能乱塞文件,否则强制自动关机。
笔者选择的编程语言是VB6.0,后台数据库是Access。学生机程序放在服务器共享给学生机,通过网络共享运行,便于更新升级。
二、 关键代码
程序的关键是正确使用设置/取消共享、映射/断开网络驱动器的API函数。总结如下。
现以服务器的操作系统为Win2000为例, 介绍关键代码及实现过程。因篇幅所限,略去制作学生个人文件夹的步骤、读取Access数据库信息的代码及API函数声明及其有关的常数、结构的定义。读者可自行查阅有关API函数用法的帮助文件。
1.设置共享(服务器端)
设置共享的过程,即读取数据库,并按数据库中的学生信息反复调用某个设置共享的函数建立共享。
NT以上操作系统设置共享的函数:
Public Function CreateShareNT(ByVal sSharePath As String, ByVal sShareName As String, ByVal sRemark As String, ByVal sROPass As String, ByVal sRWPass As String, ByVal bShareTypeRW As Boolean) As Long
’参数说明:
’sSharePath被共享的文件夹路径
’sShareName 共享名,加密并加字符$
’sRemark共享的备注信息
’sROPass只读共享密码
’sRWPass完全共享密码
’bShareTypeRW 共享类型,True为完全,False为只读
Dim re As String
Dim sServer As String
Dim lngServer As Long
Dim lngNetnameAs Long
Dim lngPath As Long
Dim lngRemark As Long
Dim lngPw As Long
Dim parmerrAs Long
Dim si2As SHARE_INFO_2
sServer = "" ’本地共享
lngServer = StrPtr(sServer) ’转成地址
lngNetname = StrPtr(sShareName)
lngPath = StrPtr(sSharePath)
If Len(sRemark) > 0 Then ’如果有备注信息
lngRemark = StrPtr(sRemark)
End If
If Len(sRWPass) > 0 Then ’如果有密码
lngPw = StrPtr(sRWPass)
End If
With si2’初始化共享信息
.shi2_netname = lngNetname
.shi2_path = lngPath
.shi2_remark = lngRemark
.shi2_type = STYPE_DISKTREE
.shi2_permissions = IIf(bShareTypeRW, ACCESS_ALL, ACCESS_READ)
.shi2_max_uses = -1
.shi2_passwd = lngPw
End With
’设置共享(用户名、共享类型、共享信息)
CreateShareNT = NetShareAdd(lngServer, 2,si2, parmerr)
End Function
可类似地编写出Win98系统下设置共享的函数CreateShare98。
Public Function CreateShare(ByVal sSharePath As String, ByVal sShareName As String, ByVal sRemark As String, ByVal sROPass As String, ByVal sRWPass As String, ByVal bShareTypeRW As Boolean) As Long
If OSIsWin98 Then
CreateShare = CreateShare98(sSharePath, _sShareName, _sRemark, _sROPass, _sRWPass, bShareTypeRW)
Else
CreateShare = CreateShareNT(sSharePath, _sShareName, _sRemark, _sROPass, _sRWPass, bShareTypeRW)
End If
End Function
其中调用了一个判断系统版本的子函数OSIsWin98,其代码略。
设置共享的过程:
Private Sub CreateShareS()
……
Do
CreateShare "d:ShareDir"
一、“网络盘”的设计思路
使用Windows可以将局域网内其他计算机的共享文件夹映射成网络驱动器,即所谓的“网络盘”。网络盘的操作方法跟本地盘是完全一致的,网络盘中的文件可直接存取。而在VB中调用相应的API函数,可以在服务器端自动设置或取消文件夹的共享,也可以在学生机端自动映射或断开网络盘。因此,可以设计程序在服务器端按学生名单自动批量制作各个学生的个人文件夹,并设置隐藏的加密共享。学生机使用客户端程序验证学生身份后,便能自动将服务器中的特定个人文件夹映射成网络驱动器,如图1所示。
具体的操作流程:
1.(服务器)面向某些班级制作各个学生的个人文件夹,并将其设为加密隐藏的共享。
2.(学生机)登录,验证学生身份。
3.(学生机)登录成功,屏幕右下方显示网络盘操作面板。
4.(学生机)“我的电脑”出现一个网络盘(X:)如图2所示。
5.(学生机)打开网络盘(X:),看到服务器制作好的文件(夹),可以直接实时编辑这些文件(夹)。
对于学生而言,登录之后只是多了一个硬盘分区,无需再说明其他的操作方法。服务器端程序可管理学生名册,增删网络盘及其中的文件。客户端程序可验证学生身份,自动映射或断开网络盘,监测网络盘内的文件类型及总容量,并可帮助学生在退出网络盘后自动关机或重启。学生无法进入他人的网络盘,在使用网络盘的过程中也不能自行断开网络盘,不能乱塞文件,否则强制自动关机。
笔者选择的编程语言是VB6.0,后台数据库是Access。学生机程序放在服务器共享给学生机,通过网络共享运行,便于更新升级。
二、 关键代码
程序的关键是正确使用设置/取消共享、映射/断开网络驱动器的API函数。总结如下。
现以服务器的操作系统为Win2000为例, 介绍关键代码及实现过程。因篇幅所限,略去制作学生个人文件夹的步骤、读取Access数据库信息的代码及API函数声明及其有关的常数、结构的定义。读者可自行查阅有关API函数用法的帮助文件。
1.设置共享(服务器端)
设置共享的过程,即读取数据库,并按数据库中的学生信息反复调用某个设置共享的函数建立共享。
NT以上操作系统设置共享的函数:
Public Function CreateShareNT(ByVal sSharePath As String, ByVal sShareName As String, ByVal sRemark As String, ByVal sROPass As String, ByVal sRWPass As String, ByVal bShareTypeRW As Boolean) As Long
’参数说明:
’sSharePath被共享的文件夹路径
’sShareName 共享名,加密并加字符$
’sRemark共享的备注信息
’sROPass只读共享密码
’sRWPass完全共享密码
’bShareTypeRW 共享类型,True为完全,False为只读
Dim re As String
Dim sServer As String
Dim lngServer As Long
Dim lngNetnameAs Long
Dim lngPath As Long
Dim lngRemark As Long
Dim lngPw As Long
Dim parmerrAs Long
Dim si2As SHARE_INFO_2
sServer = "" ’本地共享
lngServer = StrPtr(sServer) ’转成地址
lngNetname = StrPtr(sShareName)
lngPath = StrPtr(sSharePath)
If Len(sRemark) > 0 Then ’如果有备注信息
lngRemark = StrPtr(sRemark)
End If
If Len(sRWPass) > 0 Then ’如果有密码
lngPw = StrPtr(sRWPass)
End If
With si2’初始化共享信息
.shi2_netname = lngNetname
.shi2_path = lngPath
.shi2_remark = lngRemark
.shi2_type = STYPE_DISKTREE
.shi2_permissions = IIf(bShareTypeRW, ACCESS_ALL, ACCESS_READ)
.shi2_max_uses = -1
.shi2_passwd = lngPw
End With
’设置共享(用户名、共享类型、共享信息)
CreateShareNT = NetShareAdd(lngServer, 2,si2, parmerr)
End Function
可类似地编写出Win98系统下设置共享的函数CreateShare98。
Public Function CreateShare(ByVal sSharePath As String, ByVal sShareName As String, ByVal sRemark As String, ByVal sROPass As String, ByVal sRWPass As String, ByVal bShareTypeRW As Boolean) As Long
If OSIsWin98 Then
CreateShare = CreateShare98(sSharePath, _sShareName, _sRemark, _sROPass, _sRWPass, bShareTypeRW)
Else
CreateShare = CreateShareNT(sSharePath, _sShareName, _sRemark, _sROPass, _sRWPass, bShareTypeRW)
End If
End Function
其中调用了一个判断系统版本的子函数OSIsWin98,其代码略。
设置共享的过程:
Private Sub CreateShareS()
……
Do
CreateShare "d:ShareDir"