用omnetpp仿真dsr协议

本人也是第一次用omnetpp平台,模拟网络dsr协议,写这篇文章希望对实验代码做一些梳理和剖析。仿真网络的基础是构建网络,将节点,基站,消息,dsr网络定义好,并在初始化文件中将节点基站数量和坐标,网络半径和交流范围设置好。使用ned语言,一个特点就是模块化,便于组装和使用。初始化是写在ini文件中,节点个数过多,最好自己写个随机数生成函数自动生成节点的坐标。

节点代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
simple Node{
parameters:
double  tranRange;  //交流范围
 
double  x;
double  y;
@display ( "p=$x,$y;i=misc/node_vs,black" );  //坐标,图标
 
gates:
input in[];  //端口
output out;
}

  

 这便是一个完整的节点模块,类型为simple,包含参数,门,模块和模块之间通过门进行连接。input,output可以看做是节点的端口。sink的定义代码是类似的。

DSR网络代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
network Dsr     //网络
{
     parameters:  
              
         double  R;
         int  node_num;
                
     submodules:     
         
         node[node_num] : Node{         
         }
         sink : Sink{           
         }  
         
     connections allowunconnected:   //允许门不连接  
}

  这是由节点和基站组成的复合模块,网络必不可少的基础设施就是节点和基站了,参数中定义了网络半径和节点数量。

在omnetpp.ini文件中将各参数初始化,运行时编译程序首先会在定义处找初始值,如果没找到则会到ini文件中查找。  这样一个基本的网络就建好了。但这网络中没有操作,没有消息,这些就是接下来需要完成的工作。在omnetpp中,定义是写在ned文件中,但具体操作是写在源文件中,为了方便使用和查看,将源文件中参数和函数声明都写在头文件中。

节点需要些什么操作呢?

节点会跟其他节点交互,需要收发消息,需要计算距离,需要根据dsr协议检查缓存,判断有无有效路径,判断收到的消息是否重复,是否是发给自己的,消息是否完整等等。但在这里我们就实现最基本的功能就好。

头文件的定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class  Node :  public  omnetpp::cSimpleModule{
 
private :
 
     double  R;
 
     double  x;
     double  y;
     double  tranRange;
     int  node_num;
 
     struct stateInfo              //存储网络拓扑信息
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows系统上安装Omnetpp,首先需要确保已经配置好了JDK环境和GCC编译环境。然后,可以按照以下步骤进行安装: 1. 首先,从Omnetpp官方网站下载Windows版本的安装程序。 2. 双击运行下载的安装程序,按照提示进行安装。在安装过程中,可以选择自定义安装选项,并指定安装路径。 3. 完成安装后,打开Omnetpp安装目录下的"mingwenv.cmd"文件,这将启动一个命令行窗口。 4. 在命令行窗口中,输入以下命令来设置环境变量: ``` set PATH=C:\omnetpp-<version>\bin;%PATH% set OMNETPP_ROOT=C:\omnetpp-<version> ``` 将上述命令中的"<version>"替换为实际的Omnetpp版本号。 5. 安装完成后,可以通过在命令行窗口中输入"omnetpp"命令来启动Omnetpp。 请注意,这只是一个简单的安装过程示例,具体的安装步骤可能因Omnetpp版本的不同而有所差异。建议在安装前先阅读Omnetpp官方提供的安装文档以获取更详细的指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Windows10系统安装omnetpp5.7以及Ubuntu20.04系统安装omnetpp5.5.1详细教程and遇到的问题及解决方案](https://blog.csdn.net/kelisxn/article/details/122527448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值