毕业论文--无线传感器网络.doc

上传人:爱问知识人 文档编号:3938326 上传时间:2019-10-10 格式:DOC 页数:57 大小:1.03MB
返回 下载 相关 举报
毕业论文--无线传感器网络.doc_第1页
第1页 / 共57页
毕业论文--无线传感器网络.doc_第2页
第2页 / 共57页
毕业论文--无线传感器网络.doc_第3页
第3页 / 共57页
毕业论文--无线传感器网络.doc_第4页
第4页 / 共57页
毕业论文--无线传感器网络.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《毕业论文--无线传感器网络.doc》由会员分享,可在线阅读,更多相关《毕业论文--无线传感器网络.doc(57页珍藏版)》请在三一文库上搜索。

1、 第 页 装 订 线 无线传感器网络无线传感器网络 摘 要 随着协议在通信等领域的广泛应用,对协议的研究越来越重要。人们需要借助 一定的平台来模拟通信协议。OMNeT+就是近年来在科学和工业领域里逐渐流行的一 种优秀的网络仿真平台,它作为离散事件仿真器,具备强大完善的图形界面接口和 可嵌入式仿真内核,可运行于多个操作系统平台,可以简便定义网络拓扑结构,具 备编程,调试和跟踪支持等功能。OMNeT+主要用于通信网络和分布式系统的仿真。 Gossiping 协议是对 Flooding 协议的改进,节点将产生或收到的数据随机转发,避 免了内爆,但增加了时延 本文系统介绍了 Flooding 协议和

2、Gossiping 协议的仿真过程。Flooding 协议 和 Gossiping 协议是两个传统的网络路由协议,网络中的节点把收到的数据包发送 给它的所有邻居节点或者随机选择一个进行转发,这个过程一直重复直到该分组到 达 sink 节点或者该分组的生命到期。本文从如何设计模块开始,进而详细讲述了 模块功能的实现,以及配置文件的编写。最后比较了这两个协议的通信流量,性能, 时间效率。该仿真采用 C+语言编程实现。 关键词:C+ ;OMNeT+ ;Gossiping;仿真 . 第 I 页 装 订 线 Abstract With the wide use of protocol in the co

3、mmunications, research for protocol becomes more and more important. People need the help of some platforms to simulate the communication protocol. OMNeT + + is an excellent network simulation platform which is popular in scientific and industrial field in recent years. As a discrete event simulator

4、, it has a complete and powerful graphical interface and has an embedded simulation kernel. It can also run on multiple operating system platforms and can define the network topology easily with programming, debugging and tracing support functions. OMNeT + + is mainly used for communication networks

5、 and distributed systems simulation. Gossiping protocol develops from Flooding protocol. The node will forward messages randomly which are generated or received .It can avoid the implosion, but will increase the delay. This paper introduces the simulation of Flooding protocol and Gossiping protocol

6、. Flooding and gossiping protocol are the traditional network routing protocols.The network node will send received packets to all of its neighbors or randomly select a node to forward . The process is repeated until the packet reaches the sink node or TTL expires. This article starts from the desig

7、n of the module, and then introduces the realization of the module function in detail and the way of writing the configuration file. Finally, we compare the two protocols in communication flows, performance and time efficiency. The simulation was programmed with c+ language. Keywords: C + +; OMNeT +

8、 +; Gossiping; simulation 第 II 页 装 订 线 目 录 1绪 论 1 2开发工具的介绍-OMNET+和 VC6.03 2.1 OMNET+框架 .3 2.1.1 OMNeT+组成.3 2.1.2 OMNeT+结构.4 2.2 OMNET+的安装 .4 2.3 NED 语言 6 2.3.1 NED 总概述 .6 2.3.2 NED 描述的组件 .6 2.4 仿真过程9 2.5 配置文件OMNETPP.INI9 2.6 VC 开发环境的介绍 10 3FLOODING 协议的仿真.12 3.1 泛洪法(FLOODING)的介绍.12 3.2 经典算法的 OMNET 仿真

9、.13 3.3 系统设计.13 4GOSSIPING 协议的仿真19 4.1 GOSSIPING协议的介绍 .19 4.2 系统规划与设计.20 4.2.1 算法设计.20 4.2.2 模块设计.20 4.2.2.1 application 模块的设计 21 4.2.2.2 layer0 模块的设计 .22 4.2.2.3 Manager 模块的设计 24 5两个协议的仿真结果及比较测试 .25 5.1 FLOODING 协议的仿真结果及测试25 5.2 GOSSIPING 协议的仿真结果及测试.29 5.3 两个协议的对比分析 33 总 结36 致 谢37 参考文献.38 附录:部分源程序.

10、39 共 55 页 第 0 页 装 订 线 1. 绪论 无线传感器网络(Wireless Sensor Network,WSN)是由部署在监测区域内大量 的微型传感器节点组成,通过随机自组织无线通信方式形成的网络系统。WSN 在军 事国防、环境监测、智能家居、生物医疗、危险区域远程控制等诸多领域有着广泛 的科研价值和应用前景。然而,传感器节点有限的处理能力、存储能力、通信能力 以及能量问题,决定了无线传感器网络在真实环境大规模部署前,必须对其性能、 运行稳定性等因素进行测试,通过整合网络资源以使网络最优化。此外,WSN 新的 协议算法在应用实施前也需要进行验证和分析。通过构建 WSN 仿真模拟

11、环境,能够 根据需要设计网络模型,模拟大规模节点网络,在一个可控的环境中研究 WSN 的各 个运行环节,达到用相对较少的时间和费用获得网络在不同条件下的性能,因此无 线传感器网络仿真模拟技术受到越来越广泛的重视。 网络仿真是使用计算机技术构造拓扑结构,模拟网络协议的工作过程。它能设 定网络特性参数,模拟网络流量在网络中的传输过程,对网络性能进行研究和分析。 网络是一个庞杂系统,用复杂系统理论来研究网络是近几年才出现的。而 OMNeT+ 网络仿真平台的出现为用复杂系统理论研究和开发网络提供了一个用力的工具,用 基于多智能体的概念和可计算理论来考察网络的运行,会对传统基于统计概念的网 络运行机制带

12、来新的挑战。本文以工作在 OSI 的七层模型中添加一个洪泛层,并以 应用层和洪泛层为研究对象,借助 OMNET+仿真平台,基于复杂系统的概念、思想、 方法,用人工实验进行分析,并对信息随机性、突发性等引发系统堵塞的量化进行 研究。 OMNeT+的用户接口用于实现仿真程序的人机交互,OMNeT+允许模型内部机制 对用户可视化,也允许用户启动和终止仿真,并更改模型内部的变量。OMNeT+中的 图形化接口是一个用户工具,可方便用户了解模型内部的运行机制。 用户接口和仿真内核的交互是通过一个已定义的接口实现的。无需改变仿真内 核,就可以实现不同类型的用户接口。同样无需更改模型文件,仿真模型可在不同 接

13、口下运行。用户可以在强大图形化用户接口下测试和调试仿真程序,并最后可在 简单快速的用户接口中运行,而且该接口支持批处理。 Flooding 协议和 Gossiping 协议.这是两个最为经典和简单的传统网络路由协 议,可应用到 WSNs 中。这两种算法也是传统网络中最基本的路由方式,不需要知道网 络拓扑结构和使用任何路由算法。每个传感器节点把自己接收到的 packet 发送给 所有它的邻居节点或者随机选择一个进行转发,这个过程一直重复直到该数据包到达 sink 节点或者该数据包的 TTL 值为零( TTL 是指在传感器网络里数据包能被转发的 最大跳数) 。Gossiping 算法改进了 Flo

14、oding 过程,每个传感器节点只把自己接收 到的 packet 随机发送给它的某个邻居节点,其他不变。这种方式虽然实现简单,但 共 55 页 第 1 页 装 订 线 是并不实用于相关应用程序,而且还很容易带来内爆(implosion) 和交叠(overlap) 问题。在无线网络中,通过 Flooding 协议或 Gossiping 协议就可以找到一条路由, 把数据包转发到目的节点。 Flooding 协议算法的实现是在 MAC 协议层和应用层之间建立一个泛洪算法层。 应用层与泛洪算法层之间有 2 个操作:应用层发起广播;FA 层递交 FAM。FA 层与 MAC 层也有 2 个操作:FA 层发

15、送 FAM;FA 层接收 FAM,判断其是继续发送还是丢弃。 整个模块中有 3 种子模块,application 模块、layer0 模块和 manager 模块。其中 application 模块代表的是应用层,layer0 模块代表的是 FA 层,manager 模块代表 的是调度节点模块,每个模块都有自己的功能。 Gossiping 协议的仿真过程跟 Flooding 的仿真过程很类型,结构模块都是一样 的额,只是在选择节点进行转发时,有所区别。该毕业设计对这两个无线网络协议 进行了仿真,验证了这两个协议的可行性。通过对结果的分析,对比了它们在转发 数据包时所产生的流量、传输时间、效率以

16、及性能。 所以,本次毕业设计就是使用 NED 语言来描述网络的拓扑结构,用 C+语言来 实现各模块的功能。使用了开源的协议仿真开发工具OMNeT+,来部署和发布 Gossiping 协议的仿真环境。 本文将重点论述该协议仿真拓扑结构的设计。如何设计网络中节点的结构成为 设计的一个难点。而如何使用 C+编码实现模块的功能是另外一个难点。在编写拓 扑结构文件时,必须按照 NED 特有的语法。因此,本文将介绍协议仿真平台- OMNeT+的使用。OMNeT +是一个开源平台,主要用于编写文件,使用 OMNeT+平台就可以实现 Flooding 协议和 Gossiping 协议的仿真。 共 55 页 第

17、 2 页 装 订 线 2. 开发工具的介绍-OMNeT+和 VC6.0 2.1 OMNeT+框架 2.1.1 OMNeT+组成 OMNeT+主要由六个部分组成:仿真内核库(simulation kernel library,简 称 Sim) ,网络描述语言的编译器(network description compiler, nedc) ,图形 化的网络编辑器(graphical network description editor,GNED) ,仿真程序的图 形化用户接口Tkenv,仿真程序的命令行用户接口Cmdenv,图形化的输出工具 Plove 和 Scalar。 Sim 是仿真内核和类库

18、,用户编写的仿真程序要同 Sim 连接, Sim 在 OMNeT+中占据最为核心重要的地位。下面详细介绍的另外两重要组成部分。 (1)网络描述(NED)语言 NED 是模块化的网络描述语言。网络描述包括大量的对组件的描述,如通道, 简单和复合模块的类型。这些组件描述可用于各种不同的网络描述中。NED 语言用 来定义模型中的网络拓扑结构,较为简单的网络拓扑可以使用 GNED,但复杂网络的 拓扑描述还应该用 NED 源文件方式书写。 (2)用户接口 OMNeT+的用户接口用于实现仿真程序的人机交互,OMNeT+允许模型内部机制 对用户可视化,也允许用户启动和终止仿真,并更改模型内部的变量。OMNe

19、T+中的 图形化接口是一个用户工具,可方便用户了解模型内部的运行机制。 用户接口和仿真内核的交互是通过一个已定义的接口实现的。无需改变仿真内 核,就可以实现不同类型的用户接口。同样无需更改模型文件,仿真模型可在不同 接口下运行。用户以在强大图形化用户接口下测试和调试仿真程序,并最后可在简 单快速的用户接口中运行,而且该接口支持批处理。 目前 OMNeT+支持两种用户接口,即 Tkenv 和 Cmdenv。对仿真进行的测试和调 试可以在 Tkenv 接口下进行,Tkenv 是一个简便易用的图形窗口化的用户接口, Tkenv 支持跟踪,调试和执行仿真的功能。它在执行仿真过程中的任意时刻都能够 提供

20、详细的状态信息。Tkenv 的主要特征有:各模块的文本输出有其独立的窗口, 仿真过程中可以在 Tkenv 窗口中看到自传消息,支持仿真动画,标记断点,具有检 查窗口,可以检查和改变模型中的变量,执行过程中仿真结果的图形化显示并且结 果可以用柱状图和时间序列图显示,仿真可重新进行,快照文件用于显示模型的详 细信息。 Cmdenv 接口用于实际的仿真实验,因为 Cmdenv 支持批处理。Cmdenv 是一个简 便的小型命令行接口,执行速度快。它可以在所有操作系统平台上运行。Cmdenv 可 以一次批处理配置文件中所有的仿真。 共 55 页 第 3 页 装 订 线 2.1.2 OMNeT+结构 OM

21、NeT+具有模块化的结构,图 2.1 是 OMNeT+仿真的高层体系结构。 图 2.1 OMNeT+仿真程序的体系结构 图 2.1 的箭头表示两组件之间的交互,图中共有 5 个箭头,表示了组件间的 5 种关系。 (1)执行模型和 Sim:仿真内核管理将来的事件,当有事件发生时,仿真内核就 调用执行模型中的模块。执行模型的模块存储在 Sim 的 main 对象中。执行模型依次 调用仿真内核的函数并使用 Sim 库中的类。 (2)Sim 和模型组件库:当仿真开始运行创建了仿真模型的时候,仿真内核就实 例化简单模块和其它的组件。当创建动态模块时,仿真内核也要引用组件库。实现 在模型组件库中注册和查寻

22、组件也是 Sim 的功能。 (3)执行模型和 Envir:ev 对象作为 Envir 的一部分,是面向执行模型的用户接 口。仿真模型使用 ev 对象来记录调试信息。 (4)Sim 和 Envir:由 Envir 决定创建何种模型,Envir 包含主要的仿真循环,并 调用仿真内核以实现必须的功能。Envir 捕捉并处理执行过程中发生在仿真内核和 或类库中的错误和异常。 (5)Envir 和 Tkenv,Cmdenv:Envir 定义了表示用户接口的 TOmnetApp 基类, Tkenv 和 Cmdenv 都是 TOmnetApp 的派生类。main()函数是 Envir 的一部分,为仿真 决定

23、选用合适的用户接口类,创建用户接口类的实例并执行。Sim 和模型对 ev 对象 的调用通过实例化 TOmnetApp 类进行。Envir 通过 TOmnetApp 和其它类的方法实现 Tkenv 和 Cmdenv 的框架和基本功能。 2.2 OMNet+的安装 可执行模型 Sim ENVIR CMDENV 或 TKENV 模型组件 库 共 55 页 第 4 页 装 订 线 一、安装前准备 在进行安装之前,需要具备以下的软件环境: 1、MSVC 6.0.SP1(也就是说在机器中必须安装有 VC+6.0开发环境,最好是英文版的). 如果没有 SP1,AddNedFile may crash IDE

24、 due to bugs in the Visual Studio Scripting Host。 2、Ghostscript 的下载地址为: http:/ 3、OMNeT+的下载地址为:http:/omnetpp.org/download/release/omnetpp-3.3- win32.exe 4、如果你想在 VS2005中进行编译,那么 OMNeT+3.3版本需要下载一个库文件,地 址为:http:/omnetpp.org/download/release/omnetpp-3.3-win32-vc80libs.zip 二、安装步骤 软件具备后,下面开始进行安装,安装步骤如下: 1、首

25、先安装 VC+6.0开发环境,最好英文版。在安装过程中,注意勾选注册环境变 量。 2、安装 Ghostscript,一定要记住其安装目录,在进行 OMNeT+的过程中需要选 择gsgs8.64bin下的 gswin32.exe 文件 3、现在才开始安装 OMNeT+3.3,安装过程比较简单,就是在安装过程中注意选择 VC 的编译环境,本文选的是 VC6.0 Release,还有注意选择上面 gswin32.exe 的所 在目录。其他的步骤直接默认就可以进行安装了。安装后桌面会出现6个新的文件, 三个手册型的 文件(OMNeT+ API、OMNeT+ Manual、OMNeT+ Tutorial

26、 用户在学 习之前可以先看这三个文件,可以很好的帮助你入门),三个快捷方式(OMNeT+ GNED、OMNeT+ Scalars、OMNeT+ Plove),这样就说明已经安装成功了。 三、VC 环境下集成 1、OMNeT+提供了两个宏: - addMSGFileToProject: adds blank .msg file with opp_msgc invocation as Custom Build Step, and corresponding _m.cpp/h file - addNEDFileToProject: adds blank .ned file with nedtool

27、invocation as Custom Build Step, and corresponding _n.cpp file 共 55 页 第 5 页 装 订 线 2、安装这两个宏的过程: (1) 打开 VC6.0 IDE,在菜单中选择 Tools-Customize-Add-ins and Macro Files 标签-勾选 omnetpp (2) 在 Tools-Customize-Command 标签-Category 下多个了 Macro 项-选择后在 右边会显示出 addMSGFileToProject 和 addNEDFileToProject,分别将两个拖动到 VC+6.0开发环

28、境的工具栏上面,点击确认即 可。 (3)新建 VC+项目,即可在过程中进行 OMNeT+的操作。 至此,Windows 下安装 OMNeT+的过程全部结束。后面的工作主要是详细的看 OMNeT+提供的文档,以及自带的15个例子。通过不断的修改 OMNeT+提供 的例子, 会更快的进行 OMNeT+学习轨迹。 2.3 NED 语言 OMNET+是面向对象的离散事件模拟工具,为基于进程式和事件驱动两种方式的 仿真提供了支持。 OMNET+采用混合式的建模方式,同时使用了 OMNET+特有的 ned(Network Discription,网络描述)语言和 C+进行建模。OMNET+的主要模型拓 扑

29、描述语言 NED,采用它可以完成一个网络模型的描述。 网络描述包括下列组件:输 入申明、信道定义、网络定义、简单模块和复合模块定义。使用 NED 描述网络,产 生 NED 文件,该文件不能直接被 C+编译器使用,需要首先采用 OMNET+提供的编译 工具 NEDC 将.NED 文件编译成.cpp 文件。最后,使用 C+编译器将这些文件与用户和 自己设计的简单模块程序连接成可执行程序。 2.3.1 NED 总概述 NED 语言用来刻画定义模型的拓扑结构,方便对一个网络的模型化描述,这意 味着一个网络的描述可以包括一组元件的描述(通道,简单/复杂模型) ,这些组件 的描述可以在其他网络描述中得以重

30、用。包含网络描述的文件带有.Ned 的后缀, .Ned 文件动态地载入到模拟程序,或者用 Ned 编译器或 C+代码链接到模拟器执行。 NED 文件可以使用任何文本编辑器或 GNED 图形编辑器来编写。 2.3.2 Ned 描述的组件 一个 NED 描述包括以下的组件(按任意次序排列) (1)输入指示:用于引进其它网络描述文件,引进一个网络描述后,可以使用它 所包含的模块通道等组件,当一个文件被引进,只有声明信息是可用的,并且引进 一个 D 文件并不会使该 NED 文件被编译,当父文件被 NED 编译时,例如,你可以编 译所有并连接所有的网络描述文件你可以用文件名(用 NED 扩展名也可) ,

31、同样可以 共 55 页 第 6 页 装 订 线 在文件包括一条路径或者用 NED 编译器的明星行选项名引进文件的路径。 如:import “ethernet“; / imports ethernet.ned (2)信道定义:说明一个链接类型的特征,在信道申明中包含三个属性,它们都 是可选项的:delay(每仿真秒的传输延时) ,error(比特错误率) ,datarate(信 道带宽) 。且三者出现的先后顺序没有限制。 如: channelchannel LeasedLine delaydelay 0.0018 / sec errorerror 1e-8 dataratedatarate 12

32、8000 / bit/sec endchannelendchannel (3)简单模块和复合模块定义: 简单模块:它是复合模块的基本构建成分,它通过申明它的参数和门来定义。 语法如下: simplesimple SimpleModuleName parametersparameters: /. gatesgates: /. endsimpleendsimple 复合模块:它由一个或多个子模块组成。不管是简单模块还是复合模块都可以 用做子模块。它们也都能有门和参数,在简单模块能够使用的任何地方复合模块都 能使用。相对于简单模块,它还有两个部分:子模块和链接。语法如下: modulemodule

33、CompoundModule parametersparameters: /. gatesgates: /. submodulessubmodules: /. 共 55 页 第 7 页 装 订 线 connectionsconnections: /. endmoduleendmodule 其中任意部分(参数,门,子模块,链接)都是可选项。 (4) 网络定义:模块声明只定义了模块类型,要确实地获得一个仿真器能运行 的模块,需要书写网络定义,网络定义将前面定义的模块类型声明为一个仿真模块 实例,尽管可以将一个模块作为自包含的简单模块并实例为一个网络,你可能更想 使用复合模块类型。在NED文件中可以

34、有几个网络定义仿真程序,使用NED文件可运 行其中任何一个,你可以在配置文件时选择最想使用的那个,网络定义的语法如下: networknetwork wirelessLAN: WirelessLAN parametersparameters: httpTraffic=true, distanceFromHub=truncnormal(100,60); endnetworkendnetwork wirelessLAN 是前面定义好的复合模块的名称,它应该包含关于 wirelessHost,wirelessHub 等类型进一步的复合模块的定义。自然地,只 有模块类型可以使用在网络定义中,与子模块定

35、义一样,不需要对它所有的 指针赋值。 图 2.2 OMNeT中的简单模块和复合模块 2.4 仿真过程 仿真执行文件是一个独立的程序,因此它可以运行在其他没有 OMNET+或现存 模型文件的机器上。当程序被启动,它就开始读配置文件(omnetpp.ini) 。这个文 系统模块 复合模块复合模块 简单 模块 简单 模块 简单 模块 简单 模 块 简单 模块 简单 模 块 表示简单模块之间的通信 共 55 页 第 8 页 装 订 线 件包含一些设置控制仿真程序怎样执行,模型参数值等等。配置文件也能够规 定一些仿真运行;最简单的情况下,它们一个接一个地被仿真程序执行。 仿真输出被写进数据文件中:vec

36、tor 矢量文件,scalar 标量文件,和用户输出文件。 OMNET 提供了一个名为 Plove 的 GUI 工具来观察和绘制 vector 输出文件的内容。不 期望人们单独地使用 OMNET对结果文件进行处理:输出文件是一种能被读进像 Matlab 或 Octave 的数学包格式的文本文件,或被输入像 OpenOffice Calc,Gnumeric 或 MS Excel 的电子数据表。所有这些外部程序为统计分析和清晰 可见提供了丰富的功能性。 图 2.3 仿真执行过程 仿真编译过程如下: nedtool *.ned 将 ned 文件编译成_n.cc 文件。 opp_msgc *.msg将

37、*.msg 文件编译成_m.h 和_m.cc 文件。 opp_nmakemake -f -e cc(cpp) 对目录下的所有 cc(cpp)文件进行编译, cc 或 cpp 决定于你目录下的文件。若都有,必须都进行编译。之后生成 Makefile.vc 文件。 nmake -f Makefile.vc 生成可执行文件 2.5 配置文件 omnetpp.ini 该文件使得模拟程序得知将要仿真的网络,并通过该配置文件传递一些参数。 共 55 页 第 9 页 装 订 线 可分为以下几部分: 【General】包含适应于所有模拟运行的常规设置和所有用户界面。 【Run 1】,【Run 2】 ,.包含每

38、一运行设置。这些部分可能包含任意在其 他部分中被承认的实体。 【Cmdenv】包含Cmdenv专门设置。 【Tkenv】包含Tkenv专门设置。 【parameters】包含在NED文件中没有赋值的模块参数值。 【OutVectors】输出矢量的配置记录。你可以通过矢量名称和模拟时间来指 定过滤。 OMNeT+这个优秀的网络仿真平台,它主要用于离散事件的模拟。OMNeT+相对 其它网络模拟器来说,使用是较为简单,但其使用方法仍然有其特殊性和复杂性。 本章详细介绍了如何使用 OMNeT+,对其体系结构,编程语法以及建模过程都作了 详细介绍与深入剖析。 OMNeT+作为传感器网络的仿真平台具有显著

39、的优势,具体包括: OMNeT+支持用户组件库,实现了模块类型的灵活重用。 OMNeT+的面向对象特性,允许仿真内核提供基类的灵活扩展。 OMNeT+提供了图形化的网络编辑器和网络、数据流查看工具。 OMNeT+提供仿真类库和用户界面,支持输入/输出、仿真数据的图形化显示、随机 数生成器、消息结构等。通过用户界面,可以跟踪调试仿真过程。 仿真环境采用 C+语言开发,并采用自定义的配置文件 omnetpp.ini 进行配置定义。 OMNeT+在仿真 802.11 的 MAC 和 Directed Diffusion 协议时,比其他的网络仿 真工具要快。 2.6 VC 开发环境的介绍 Visual

40、 C+是一个功能强大的可视化软件开发工具。自1993年 Microsoft 公司 推出 Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员 进行软件开发的首选工具。 虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的 局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所以实际中,更 共 55 页 第 10 页 装 订 线 多的是以 Visual C+6.0为平台。 Visual C+6.0不仅是一个 C+编译器,而且是一个基于 Windows 操作系统的可 视化集成开

41、发环境(integrated development environment,IDE) 。Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐 的开发环境。 Visual C+它大概可以分成三个主要的部分: 1Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它 上面完成的,再加上它的标题赫然写着“Microsoft Visual C+” ,所以很多人理所 当然的认为,那就是 Visual C+了。其实

42、不然,虽然 Developer Studio 提供了一 个很好的编辑器和很多 Wizard,但实际上它没有任何编译和链接程序的功能,真正 完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio 并不是专门 用于 VC 的,它也同样用于 VB,VJ,VID 等 Visual Studio 家族的其他同胞兄弟。所 以不要把 Developer Studio 当成 Visual C+, 它充其量只是 Visual C+的一个壳 子而已。这一点请切记! 2MFC。从理论上来讲,MFC 也不是专用于 Visual C+,Borland C+,C+Builder 和 Symante

43、c C+同样可以处理 MFC。同时,用 Visual C+编写代 码也并不意味着一定要用 MFC,只要愿意,用 Visual C+来编写 SDK 程序,或者使 用 STL,ATL,一样没有限制。不过,Visual C+本来就是为 MFC 打造的,Visual C+中的许多特征和语言扩展也是为 MFC 而设计的,所以用 Visual C+而不用 MFC 就等于抛弃了 Visual C+中很大的一部分功能。但是,Visual C+也不等于 MFC。 3Platform SDK。这才是 Visual C+和整个 Visual Studio 的精华和灵魂, 虽然我们很少能直接接触到它。大致说来,Pla

44、tform SDK 是以 Microsoft C/C+编 译器为核心(不是 Visual C+,看清楚了) ,配合 MASM,辅以其他一些工具和文档 资料。上面说到 Developer Studio 没有编译程序的功能,那么这项工作是由谁来完 成的呢?是 CL,是 NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才 是构成 Visual Studio 的基石。 在 VC+中,我们可以编写代码实现协议的仿真。 共 55 页 第 11 页 装 订 线 3. Flooding 协议的仿真 3.1 泛洪法(Flooding)的介绍 泛洪法是一种传统的网络路由协议,如图3.1所示。节点S希望发

45、送数据给节点 D,首先通过网络将数据副本传给它的每一邻居节点,每一个邻居节点又将其传输 给各自的邻居节点,如此继续下去,直到将数据传到目标节点D为止,或者为该数 据所设定的生存时间变为零或者所有节点都拥有此数据副本为止。优点是实现简单, 不需要为保持网络拓扑信息和实现复杂的路由发现算法而消耗计算资源;适用于健 壮性要求高的场合。缺点是存在信息爆炸问题,即出现一个节点可能得到一个数 据多个副本的现象; 会出现部分重叠现象,如果处于同一观测环境的两个相邻同 类传感器同时对一个事件做出反应,二者采集的数据性质相同,数值相近,那么, 这两个节点周围的邻居节点将收到双份数据副本;造成盲目使用资源,即扩散法 不考虑各节点能量可用状况,因而无法做出相应的自适应路由选择。 图3.1 扩散法 泛洪法是基于广播的路由协议,当某个节点完成广播消息的初始化后,就把这 条消息发送给它的所有邻居节点。邻居节点是指处于该节点的传输范围内的节点。 当某个节点第一次接收到FAM(flooding algorithm message)时,它就接着广播给 自己的邻居节点,如已收到过就丢弃该FAM,最终实

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1