基于网络的虚拟实验平台-电路管理模块的设计与实现
来源:wenku163.com 资料编号:WK1638264 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9AWK1638264
资料介绍
1.2 课题研究方法
考虑到学生的使用方便和设计的方便,我们网络化改进小组进行了分工,考虑到把电路图文件写到平台当中不方便后期的网络化升级,一但想要做新的实验都需要修改平台代码,再加上因为平台实验众多的原因,学生在实验的时候也需要通过自己实际的动脑来设计新的实验电路图,提高学生的设计能力,因此,在网络化升级的时候需要有一个单独电路图文件来辅助虚拟实验平台的升级,而我负责的就是电路图部分,因此首先需要能够把这些电路图信息写到一个文件,再把这个文件保存起来,初期考虑到使用数据库,但是因为数据库存储文件的不方便和消耗的资源太多等原因,因此我们直接采用文件的方式来保存这些信息,而所有的这些文件信息都是写到一个文本文档当中的,因此,文本文件(txt文件)的内容格式定义就成了本课题的重点研究对象。
在网络化越来越重要的今天,一个不能和外界通信的软件平台正在逐渐失去其本身的意义,用一个形象的比喻来讲,网络化改进好比是对一个原本能力很强,但是其本身却不能说话的人进行改造,改造以后的这个人,不仅能说,同样也能听,在一定程度上具备了沟通的能力,对虚拟实验平台的网络化改进也是如此,我们可以在网络化的基础上实现其他的很多功能,如动态升级该平台,教师实现其实验管理,教师远程协助学生完成实验等功能,在设计当中,我们涉及了两个问题,NAT转换,UDP传输,版本的判断等问题,在整个网络化改进组完成该项目的改进以后,该平台将是一个在实际的教学实验环节当中非常实用,功能非常强大的一个平台。
2 涉及到的技术
2.1 电路管理
当然,有了网络通信就可以用到网络升级,有了网络升级就需要用到版本的划分,而在我们小组的网络化改进当中,我们是把版本划分的标识放在我们的电路图当中的,这样不仅能够很好的区分我们的平台的版本,还能够通过平台版本来区别我们电路图的版本,所以对服务器造成的负担减小了,节约了资源,方便了更多用户对服务器进行访问。
2.2 电路图的传输--P2P技术
所谓P2P技术指的就是消费者和生产者之间为达到一定的目的而进行的直接的、双向的信息或服务的交换。在这里P2P即是英文Peer to Peer的简称,其中Peer是“同等的人、伙伴”的意思。国内的媒体一般将P2P翻译成“端对端”或者“点对点”,P2P的实质即代表了信息和服务在一个个人或对等设备与另一个个人与对等设备间的流动。P2P定义如下:系统由若干互联协作的计算机构成,且至少具有如下特征之一:系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。P2P网络是互联网整体架构的基础,互联网最基本的 TCP/IP协议并没有客户端和服务器的概念,在通讯过程中,所有的设备都是平等的一端。广义的P2P 网络将 P2P网络划分为纯分散式 P2P网络(如gnutella模型)、超级结点式网络和混合式 P2P网络等大类。
2.3 P2P要解决的重要问题-NAT转换
最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接。那么这个子网中其实只有少数的节点需要全球唯一的IP地址,其他的节点的IP地址应该是可以重用的。
在Ipv4版本当中IP地址是采用32bit的2进值数据来划分的,当然,在当初构建IP协议的时候,我们的创始者并没有考虑到internet在未来的发展是这么的迅速,时至今日,IP地址已经出现的枯竭的状况,在这种情况下,我们就想到了采用NAT转换来进行改进,所谓NAT转换就是,在一个局域网当中,我们只用一采用一台主机使用公网,即外网的IP地址,其他主机的IP地址都采用我们的内网地址,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。如192.168.0.0网络和127.0.0.0网络和10.0.0.0网络,在外部网络访问内部网络的时候都提供一个进行网络地址转换的平台,那么基本NAT就负责将这个节点的子网内IP转化为一个全球唯一的IP然后发送出去。(关于基本的NAT可以参看RFC 1631)当然,该平台可以是软件,也可以是硬件。
3 涉及到的概念
3.1 虚拟实验平台
虚拟实验平台是一款用于教学实验的软件平台,在该平台当中,我们可以做不同的计算机接口实验,可以通过实验来让学生更好的接触和理解计算机接口,计算机接口实验。
3.2 VC++开发环境简介
VC是一套集成了IDE开发的软件,可以用于编译,编辑和调试,他很好的继承了C以及C++当中的优点以及语法,但C++中的有些特性是不用的,例如I/O流,多态继承,VC做到了真正的实用。MFC在VC中是相当重要的,把MFC称做为VC的灵魂一点都不为过, MFC是对WindowsAPI的封装,大大简化了我们的工作;MFC为我们提供了大量的常用的API函数的接口,当我们需要用到这些函数的时候并不需要我们再去经过复杂的编写和编译过程,而是直接调用我们MFC当中相对应的函数即可。
下面介绍最重要的MFC,这部分的MFC函数也是我们在程序中最为需要的核心函数。
3.3 API简介
API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。
但是,那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。
这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。
实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。
这也是API函数使用的场合,所以我们对待API函数不必刻来研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。正如某位大虾所说:API不要去学,在需要的时候去查API帮助就足够了。 |