基于网络的虚拟实验平台动态升级模块的设计与实现论文.docx
- 文档编号:4942376
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:19
- 大小:120.81KB
基于网络的虚拟实验平台动态升级模块的设计与实现论文.docx
《基于网络的虚拟实验平台动态升级模块的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《基于网络的虚拟实验平台动态升级模块的设计与实现论文.docx(19页珍藏版)》请在冰豆网上搜索。
基于网络的虚拟实验平台动态升级模块的设计与实现论文
基于网络的虚拟实验平台-动态升级模块的设计与实现
摘要
为优化学校虚拟实验平台功能,以其网络化改进方向为目标,设计与实现虚拟实验平台的动态升级模块。
现有的虚拟实验平台不具有任何网络功能,所能进行的实验内容也相当有限,更重要的是实验内容的更新也是一大问题。
该动态升级模块以现有的虚拟实验平台程序为基础,通过向目标主机查询是否拥有本机所没有的实验内容,如有则由用户决定是否下载,另外查询目标主机实验内容的版本号,与本机版本相比较,判断是否为新版本的实验内容,最后由用户决定是否更新。
关键词:
虚拟实验平台;版本;动态升级。
TheVirtualExperimentalPlatformbasedontheNetwork-TheDesignandRealizationoftheDynamicUpdateModule
Abstract
Inordertooptimizethefunctionofthevirtualexperimentationplatformandwiththeaimofitsnetworkamelioration,wedesignandrealizethedynamicupdatemoduleofthevirtualexperimentationplatform.Theexperimentationplatformwhichwealreadyprovidedwithdon’thaveanynetworkfunctionandithasfewoftheexperimentweneed,besidestheupdateoftheexperimentationplatformisthemostimportantproblem.Thisdynamicupdatemoduleisbasedontheprogramofthedummyexperimentationwealreadyprovidedwith,wesearchthehostcomputerwhetherhastheexperimentwedon’thaveanddecidetodownloadthenewexperimentationornotbytheuser.Ontheotherside,wesearchtheversionoftheexperimentofthehostcomputer,comparewiththeversionwealreadyprovidedwithanddecidetoupdateornot.
Keywords:
virtualexperimentalplatform;version;dynamicupdate.
目录
论文总页数:
18页
1引言1
1.1课题背景1
1.2本课题的研究意义1
1.3本课题的研究方法1
2系统构成1
2.1系统概要1
2.2系统模块2
2.3项目要求2
3开发工具及背景2
3.1VisualC++6.02
3.2网络基础知识2
3.2.1OSI参考模型2
3.2.2TCP/IP参考模型4
3.3C/S结构工作过程5
3.4C/S结软件自动更新的背景6
4虚拟实验平台动态升级模块的设计与实现7
4.1界面设计7
4.2程序执行流程图7
4.3主要步骤及具体实现方案8
4.3.1查询服务器端信息8
4.3.2比较新旧版本9
4.3.3获得升级程序文件的路径11
4.3.4获得文件升级后的保存路径11
4.3.5从服务器下载文件并保存到本地11
4.3.6关于如何保存当前版本号的问题13
5程序测试过程及结果14
5.1老版-新版本成功升级14
5.2版本无需更新15
结论16
参考文献16
致谢17
声明18
1引言
1.1课题背景
为优化学校虚拟实验平台功能,以其网络化改进方向为目标,设计与实现虚拟实验平台的动态升级模块。
现有的虚拟实验平台不具有任何网络功能,所能进行的实验内容也相当有限,所以实验内容的更新是一大问题。
现需要在现有的虚拟实验平台程序的基础上,设计并实现其动态升级模块。
该模块通过向目标主机查询实验内容的版本号,与本机实验的版本号相比较,判断是否为新版本的实验内容,最后实现实验的版本更新。
1.2本课题的研究意义
当前,升级功能作为大多数软件延长其生命周期必不可少的手段,为了赋予实验平台功能的可更新性,增强实验平台的灵活性,赋予其网络功能有着极为重要的意义。
本设计的主要目的是为了检查使学生综合运用以前所学知识(包括以前所学的一些关于网络技术、编程技术、网络与信息安全等知识)的能力,设计开发一个软件升级模块;既锻炼了学生的实际动手能力,又引导学生进行了一次模拟实际产品的开发,对于学生以后工作能力的培养具有重要的意义。
1.3本课题的研究方法
本题目要求设计开发一个功能较完善的软件升级模块。
因此,本次毕业设计应首先分析软件升级的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,选用VisualC++进行本毕业设计的开发;在设计中重点以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;同时,在开发设计与实现中,要保存好相关的设计文挡,为后面的毕业论文的写作准备材料;最后,系统开发完毕后,进行调试和试运行,做好调试和试运行的相关记录,也为后面的毕业论文的写作准备材料。
2系统构成
2.1系统概要
虚拟实验平台是成都信息工程学院单片机与接口等相关实验课程中使用的一款微机实验仿真实验系统。
主要具有以下功能和特点:
1.仿真8255、8253和基本I/O接口电路等;
2.虚拟常用外围单元电路,包括指示灯、数码管、传感器、交通、霓虹灯等,虚拟平台可同时使用;
3.提供了典型实验项目的参考实例和实验教学,还可完成相关的课程设计。
虚拟实验就是利用外部输入(如鼠标的点击、拖动和键盘的敲击等),将计算机上虚拟的各种仪器,按实验要求、过程,组装成一个完整的实验环境,同时在这个环境中完成实验操作,包括实验器材的添加、实验条件的改变、数据采集以及实验结果的模拟、分析。
它包含了虚拟仿真技术、计算机技术、实验技术、网络技术与专业等多方面理论知识。
2.2系统模块
该虚拟实验平台现有五个方向的网络化改进模块:
1.VLP2P通信逻辑模块;
2.动态升级模块;
3.远程指导演示模块;
4.远程协作模块;
5.教师管理模块;
本人完成的是动态升级模块。
2.3项目要求
完成动态升级的基本功能,通过查询目标主机实验内容的版本号,与本机版本相比较,判断是否为新版本的实验内容,最后实现实验的版本更新。
3开发工具及背景
3.1VisualC++6.0
VisualC++6.0是微软98年推出的产品,它提供了强大的编译能力以及良好的界面操作性。
能够对Windows9x、WindowsNT以及Windows2000下的C++程序设计提供完善的编程环境。
同时VisualC++6.0对网络、数据库等方面的编程也都提供相应的环境支持。
3.2网络基础知识
3.2.1OSI参考模型
国际标准化组织(ISO)开发了开放式系统互联(OSI)参考模型,以促进计算机系统的开放互联。
开放式互联就是可在多个厂家的环境中支持互联。
该模型为计算机间开放式通信所需要定义的功能层次建立了全球标准。
OSI模型将通信会话需要的各种进程划分成7个相对独立的功能层次,这些层次的组织是以在一个通信会话中事件发生的自然顺序为基础的。
图1描述了OSI,1-3层提供了网络访问,4-7层用于支持端端通信。
1.物理层[7]物理层是OSI模型的最低层,它建立在物理通信介质的基础上,规定了机械的、电气的功能;该层负责建立、保持和拆除物理链路;规定如何在此链路上传送原始比特流;比特如何编码,使用的电平,极性,连接插头插座的插脚如何分配等。
所以在物理层数据的传送单位是比特(bit)。
0SI参考模型
层次描述
OSI层次号
应用层
7
表示层
6
会话层
5
传输层
4
网络层
3
数据链路层
2
物理层
1
图1-OSI参考模型
2.数据链路层它把相邻两个节点间不可靠的物理链路变成可靠的无差错的
逻辑链路,包括把原始比特流分帧(frame)、顺序、排序、设置检错、确认、重发、流控等功能;数据链路层传动信息的单位是frame,每帧(frame)包括一定数量的数据和一些必要的控制信息,在每帧(frame)的控制信息中,包括同步信息、地址信息、流量信息等;同物理层相似,数据链路层负责建立、维护和释放数据链路。
3.网络层,它连接网络中任何两个计算机点,从一个节点上接收数据,正确的传送到另一个节点;在网络层,传送的信息单位是分组或包(packet)。
网络层的主要任务是要选择合适的路由和交换节点,透明地向目的站交付发送站所发的分组或包,这里的透明表示收发两端好像是直接连通的,另外网络层还要解决网络互连、拥挤控制等问题。
上述三层组成了所谓的通信子网,用户计算机连接到此子网上。
通信子网负责把一个地方的数据可靠地传送到另一个地方,但并未实现两个地方主机上进行进程之间的通信,通信子网的主要功能是面向通信的。
4.传输层上真正地实现了端对端间通信,把数据可靠地从一方的用户进程或程序送到另一方的用户进程或程序。
这一层的控制通常由通信两端的计算机完成。
中间节点一般不提供这一层的服务,这一层的通信与通信子网无关。
从这一层开始的以上各层全部是针对通信的最终的源端目的端计算机的进程之间的。
传输层传送的信息单位是报文(message)。
传输层向上一层提供一个可靠的端一端服务,使上一层看不见下面几层的通信细节。
正因为如此,传输层成为网络体系结构中关键的一层,对于传输层的功能,主要在主机内实现。
而对于物理层、数据链路层以及网络层的功能均能在报文接口机中实现。
对于传输层之上的各个层次的功能通常在主机中实现。
5.会话层又称对话层会话层允许两个计算机上的用户进程建立对话连接,双方相互确认身份,协商对话连接的细节;它可管理对话是双向同时进行的,还是任何时刻只能一个方向进行。
在后一种情况下,对话层控制哪一方有权发送数据;对话层还提供同步机制,在数据流中插入同步点机制,在每次网络出现故障后可以仅重传最近一个同步点以后的数据,而不必从头开始。
以上两层为两个计算机上的用户进程或程序之间提供了正确传送数据的手段。
6.表示层主要解决用户信息的语法表示问题。
表示层将数据从适合于某一系统的语法转变为适合于OSI系统内部使用的语法。
具体地讲,表示层对传送的用户数据进行翻译、编码和变换,使得不同类型的机器对数据信息的不同表示方法可以相互理解。
7.应用层主要处理资源可用性和安全问题,它包含了大量人们普遍需要的协议,如FTP、TELNET、HTTP、SMTP等。
最近几年,应用层协议发展很快,出现了很多新的应用,如ICQ、Multimediastream等。
3.2.2TCP/IP参考模型
TCP/IP使跨平台,或称为异构的网络互联成为可能。
由图2我们可以看到,TCP/IP与OSI参考模型不同,TCP/IP模型更侧重于互联设备间的数据传送,而不是严格的功能层次划分。
它通过解释功能层次分布的重要性来做到这点,但仍为设计者具体实现协议留下很大的余地。
因此,OSI参考模型在解释互联网络通信机制比较适合,但TCP/IP成为了互联网络协议的市场标准。
TCP/IP参老-模型是在它所解释的协议出现很久以后才发展起来的,更重要的是,在于它更强调功能分布而不是严格的功能层次的划分,因此它比OSI模型更灵活。
TCP/IP参考模型层
次描述
TCP/IP层次号
应用层
4
传输层
3
网络层
2
数据链路层
1
图2-TCP/IP参考模型
1.应用层:
应用层包括SMTP,FTP,HTTP,NFS,NIS,LPD,TelnetfIIRemoteLogin应用层包括一些服务,这些服务在OSI中由独立的三层实现。
这些服务是和端户相关的认证、数据处理以及压缩。
包括电子邮件、浏览器、Telnet以及其他的Internet应用。
2.传输层:
传输层包括TCP(TransportControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议)。
UDP几乎不进行检查,而TCP提供传输保证。
与OSI中传输层不一样,TCP不保证报文的准确传输。
TCP为两台主机提供高可靠性的数据通信。
而另一方面,UDP则为应用层提供一种非常简单的服务,它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
任何必需的可靠性必须由应用层来提供。
3.网络层:
TCP/IP协议族中,网络层由以下协议组成:
ICMP(Internetr联网托制报文协议)、IP(网际协议)、IGMP(Internet组管理协议)、RIP,OSPF和月j-t几路由的EGPo网络层处理报文的路由管理。
4.链路层:
链路层包括ARP和RARP,负责报文传输;链路层管理网络的连接并提供网络上的报文输入/输出。
3.3C/S结构工作过程
C/S结构,全称Client/Server(客户端/服务器)结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势,在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(client/server),即客户向服务器提出请求,服务器接收到请求后,提供相应的服务。
客户机/服务器模式的建立基于以下两点:
首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。
其次,网之间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。
客户机/服务器模式在操作过程中采取的是主动请求的方式。
首先服务器方要先启动,并根据请求提供相应的服务:
打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求。
等待客户请求到达该端口。
接收到重复服务请求,处理该请求并发送应答信号。
接收到并发服务请求,要激活一个新的进程(或线程)来处理这个客户请求。
新进程(或线程)处理此客户请求,并不需要对其它请求做出应答。
服务完成后,关闭此新进程与客户的通信链路,并终止。
返回第二步,等待另一客户请求。
关闭服务器:
客户方:
打开一个通信通道,并连接到服务器所在主机的特定端口。
向服务器发服务请求报文,等待并接收应答;继续提出请求。
请求结束后关闭通信通道并终止。
3.4C/S结软件自动更新的背景
自动升级软件是一个独立的应用程序(单独的可执行文件例如MyUpdate.exe),供软件开发者编写代码,以外部程序的方式运行,例如调用ShellExecute这个API函数,或者在各种编程语言的中采用不同的方法来运行,如C语言可以用system函数、VisualBasic语言则可以用Shell函数,其他语言也有类似的方法。
自动升级软件的基本功能是对软件进行升级,首先需要能检测到软件最新版本的信息。
软件开发者将软件最新版本的信息保存为一定格式的文件,放置到网络上固定的地址,自动升级软件访问该地址下载文件到本地,解析文件内容以进行升级。
文件格式可以是任意的,但考虑到通用性,宜采用容易阅读、容易解析的文件格式。
下载文件时采用的通信协议也可以是任意的,但最好也是采用通用的成熟的协议,例如HTTP、FTP协议等,充分利用已有的技术,减少开发新协议的工作量。
比如HTTP协议,用WinInet系列API函数来实现文件的下载。
自动升级软件每运行一次,便到指定的网址下载软件最新版本的信息文件,并以此信息文件内容来获取软件最新版本的信息。
下载到软件最新版本的信息文件(以下称之为配置文件)后,自动升级软件将解析该文件,根据文件内容来完成软件升级。
配置文件必须满足一定的格式,我是通过读取[UPDATE]区段的AppName的值来判断该文件格式是否正确的,如果读到的是空内容则认为文件的格式不正确并停止升级。
配置文件中包含软件最新的版本号(Version),用以和本地软件版本号相比较。
本地软件版本号以命令行参数方式传入,例如:
MyUpdate.exe/CurrentVersion=1.1。
在配置文件中,可以定义一系列的操作命令,包括下载、复制、移动、删除文件、运行外部程序等,最终完成软件的升级。
一次升级需要更新的文件往往不止一个,配置文件中指定了要下载的文件总数(FileCount),以及各个文件的文件名(Name)、下载地址(URL)、文件大小(Size)和要更新到的路径(DestPath)。
在升级替换文件时,如果可执行文件或动态链接库等已驻留内存,由于操作系统的保护,文件替换是不能成功的,此时需要结束程序的运行再替换文件,也就是自动升级程序要通知正在运行的主程序:
升级已经就绪、需要暂时结束程序来完成升级。
通过在应用进程间发送消息的方法来实现升级完毕消息的传递,接收消息的目标窗口句柄、窗口标题、消息内容以命令行参数传入。
自动升级软件可以以带进度显示的窗口方式运行,显示当前下载的文件、下载速度、完成比例和总升级进度等,让用户对升级过程有一个明确的了解。
为了保持软件的友好性,软件开发者在调度自动升级程序时,也就是设计主程序时,应当允许用户对软件更新行为进行控制,可设置是否检测更新以及检测更新的时间周期。
除非必须,应保留用户不对软件进行升级的选择权,升级只是一种建议,最好是能提示新版本软件优于以往版本的特性,让用户自己决定是否进行升级。
不同的软件,其自动升级程序应当可以分别独立地运行,互不干扰,但是同一软件的自动升级程序应当只能运行一个实例,否则可能会发生文件读写冲突等问题。
启动自动升级软件时,以命令行参数方式传入要升级的软件名,例如MyUpdate.exe/AppName=MyProgram/CurrentVersion=1.1,自动升级软件以此软件名创建互斥量,避免同时运行同一软件的多个自动升级程序实例。
4虚拟实验平台动态升级模块的设计与实现
4.1界面设计
程序界面如图3所示:
图3-程序界面
4.2程序执行流程图
该升级程序的执行流程图如图4所示。
图4-程序执行流程图
4.3主要步骤及具体实现方案
4.3.1查询服务器端信息
[1]设计思路:
服务器端信息记录于http:
//localhost/update/index.asp(这里以本机测试为例)文件中,主要包括版本号、更新文件路径信息。
在ASP中,使用Response对象可以将输出发送到客户端,其中的Write方法Respongs.Write是将变量作为字符串写入当前的HTTP输出。
这里是通过读取index.asp中的Respongs.Write得到字符串,此字符串为服务器版本号以及Client.exe更新文件路径。
[2]具体实现如下:
以本机测试为例,由strInfo=dlg->pMyFun->InternetGetInfo(strUrl)得到#”&VersionAuto&”#http:
//”&ServerName&”/UpDate/Client.exe#
即#1.0.0.1#http:
//127.0.0.1/UpDate/Client.exe#;
然后由:
iPos1=strInfo.Find(“#”);
iPos2=strInfo.Find(“#”,iPos1+1);
NewVersion=strInfo.Mid(iPos1+1,iPos2-iPos1-1);
得到服务器端版本号;
最后再由:
iPos1=iPos2;
iPos2=strInfo.Find(“#”,iPos1+1);
strUpdateUrl=strInfo.Mid(iPos1+1,iPos2-iPos1-1);
得到更新文件Client.exe路径;
函数Cstring:
:
Find和Cstring:
:
Mid将在4.3.2中说明。
4.3.2比较新旧版本
[1]设计思路:
版本号格式设计为X.X.X.X,例如客户原始版本号为1.0.0.1;这里我采用的比较方法是把版本号转换为4位数字,如:
版本号1.2.3.4分别提取这4个字符然后转换成整形变量,采用公式1*1000+2*100+3*10+4转换成1234,最后比较大小。
[2]相关函数说明:
(1)Cstring:
:
Find(str,”要查找的字符串”,pos),函数用于从给定的字符串中寻找并返回第一处匹配指定子字符串开始的序号,第三个参数pos指定搜索开始的位置,这个参数可以省略(使用默认值1),如果字符串不能包含该子字符串相匹配部分,则返回-1;
(2)Cstring:
:
Mid(string,npos,n),函数用于从字符串string的npos位开始截取n位;
(3)atoi函数用于将字符串转换成整型数。
[3]下面以版本号第一位的比较为例来说明程序版本的比较方法:
iOldPos1=strOldVersion.Find(“.”);
iOldPos2=strOldVersion.Find(“.”,iOldPos1+1);
iOldPos3=strOldVersion.Find(“.”,iOldPos2+1);
//分别保存老版本号中第一、二、三个“.”字符出现的序号到iOldPos1,iOldPos2,iOldPos3;
iPos1=strNewVersion.Find(“.”);
iPos2=strNewVersion.Find(“.”,iPos1+1);
iPos3=strNewVersion.Find(“.”,iPos2+1);
//分别保存新版本号中第一、二、三个“.”字符出现的序号到iPos1,iPos2,iPos3;
strOldVer1=strOldVersion.Mid(0,1);
strOldVer2=strOldVersion.Mid(iOldPos1+1,1);
strOldVer3=strOldVersion.Mid(iOldPos2+1,1);
strOldVer4=strOldVersion.Mid(iOldPos3+1,1);
//分别从版本号字符串的第0、iOldPos1+1、iOldPos2+1、iOldPos3+1位截取1个字符长度保存到strOldVer1、strOldVer2、strOldVer3、strOldVer4;
strNewVer1=strNewVersion.Mid(0,1);
strNewVer2=strNewVersion.Mid(iPos1+1,1);
strNewVer3=strNewVersion.Mid(iPos2+1,1);
strNewVer4=strNewVersion.Mid(iPos3+1,1);
//分别从版本号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 网络 虚拟 实验 平台 动态 升级 模块 设计 实现 论文