|
摘 要 虚拟实验平台是一个能很好地提升教学效果的平台。在这个平台当中,完全通过软件模拟的方式来仿真实现接口实验的各个步骤及实验效果。本平台主要功能已在单机上基本完成,但在网络化越来越重要的今天,一个平台仅仅能够在单机上使用是远远不够的,进行网络化的增强改进就显得十分重要。在网络化改进时要解决很多新的问题,如电路图文件的的定义,NAT转换的处理,传输途径的选择,传输协议的选择等问题。在本毕业设计当中,主要是设计一个与虚拟实验台相配套的电路图文件格式,在此格式当中需要描述的信息除一般电路包括的器件信息、器件管脚信息、连线信息外,还包括仿真实现器件功能的软件模块信息,所有这些信息通过自定义的文本文件格式来描述。在虚拟实现平台运行时,可以通过选择不同的电路图文件做不同的实验。在实验进行当中,有可能要修改连线,要求本模块能实现对这些操作实施记录、保存。电路图文件可以通过网络传输、更新,是基于网络的虚拟实验平台的重要的基本功能。 关键词:虚拟实验平台;网络化改进;电路管理;P2P;NAT转换
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帮助就足够了。
|