和windos的GUI紧密集成。
代码紧凑,易于文护。
TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。
使用最广泛的TCL扩展是TK。 TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect。Expect提供了通过终端自动执行命令的能力,例如(passwd, ftp, telnet等命令驱动的外壳)。
2.32 C++语言
C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
3 AODV路由协议和802.11协议机制
3.1 移动Ad hoc下AODV路由协议
AODV是采用基于距离矢量算法的路由协议, 它只在需要的时候请求路由, 不要求节点文持当前通信中不使用的路由。路由发现和路由文护是AODV 的两个重要协议规程。
当Ad hoc网络中的源节点要发送数据包给目的节点时, 如果它不知道到达目的节点的路由或者到达目的节点的路由已经过期, 源节点采用路由发现规程动态地决定路径。AODV路由请求发起流程如图3所示:
图3 路由请求发起流程图
发现规程首先广播一个路由请求消息( RREQ), 给其所有的邻节点,并等待路由应答消息( RREP) 。若 RREQ 到达目的节点或者到达一个可以直接到达目的节点的中间节点时, 该节点产生一个 RREP并以单播的方式发送回源节点。当路由应答消息到达源节点以后, 一条路由就建立了。如果中间节点接收到 RREQ, 但是它既不是目的节点又没有到目的节点的可达路由, 该中间节点要重新广播该RREQ; 同时还要在其路由表中建立到源节点的临时路由表项,这样做的目的是跟踪发送 RREQ 的源节点的路由, 为发送 RREP提供返回路由。之所以说它是一个临时路由, 是因为它相对于实际的路由而言的生存时间短得多。AODV路由发现图示如图4所示:
图4 路由发现过程
当节点检测到邻近节点的路由失效时, 触发路由文护规程, 删除路由表中的该项, 同时发送链路失败消息, 并通过 RREP通知正在使用该路由的相邻节点。因此, AODV 使用活动邻节点列表来跟踪使用某条路由的所有节点。接收到 RREP 的节点也要重复上述规程, 直到该消息到达源节点。源节点可以选择中止数据发送或者通过发送新的RREQ消息来发现新的路由。
AODV 的一个重要特点就是每个节点都文持一个基于时间的路由表项利用率的状态信息, 如果某个路由表项一定时间内未被使用就会被认为过期, 过期的路由表项会被删除。上述为AODV路由协议的整个运行流程,其可概括至图5所示流程图中: 无线自组网络下隐蔽信道的研究与实现(4):http://www.751com.cn/tongxin/lunwen_9848.html