Omnet学习笔记(一)
前言
1、本机为Inspiron 5005
,为64
位,所用操作系统为Windos 10
。所使用软件为Omnet-5.2.1
。
2、推荐Omnet入门教程系列
实验现象
在网络Tictoc1
中创建两个节点,分别命名为"tic"
和"toc"
,然后"tic"
创建一个数据包,然后"tic"
和"toc"
将这个数据包进行相互传递。(注:效果演示如下图所示)
重要知识点讲解
1、本实验中的Omnet项目中的主要文件有.ned文件、.cc文件、.ini文件。
2、.ned文件用于规定网络模块中的组成和链接。
3、.ned文件有可视化(Design)以及代码(Source)两种方式进行编辑。
4、所用到.ned语法简介。
保留字 | 作用 |
---|---|
simple | 定义简单模块 |
gates | 定义门 |
input | 定义输入 |
output | 定义输出 |
network | 定义网络模块 |
submodules | 定义子模块 |
connection | 定义连接 |
5、.cc文件用于规定网络模块的操作内容。
6、.ini文件用于定义网络的仿真环境。
实现步骤
1、点击File —> new —> OMNeT++Project
创建一个工程。
2、在红框所圈处为自己的工程命名,命名完成后点击Next
。
3、点击Empty project —> Next
。
4、点击Finish
即可完成工程创建。
5、右键自己创建工程,然后点击New —> Network Discription file
创建Ned文件。
6、在红框所圈处为自己的Ned文件命名,命名完成后点击Next
。
7、点击Empty NED file —> Finish
即可完成.ned文件创建。
8、打开.ned文件,点击source
,在如下界面写自己的代码。
(注:示例代码如下)
//将Txc1声明为简单类型模块
simple Txc1
{
gates:
input in; //一个输入门
output out; //一个输出门
}
//声明Tictoc1为一个网络模块
network Tictoc1
{
submodules: //Tictoc1由两个子模块tic和toc组装而成,这两个子模块都是Txc1模块类型的实例
tic: Txc1;
toc: Txc1;
connections: //tic的输出门连接到toc的输入门,反之亦然,双向都会有100毫秒的传播延迟。
tic.out --> { delay = 100ms; } --> toc.in;
tic.in <-- { delay = 100ms; } <-- toc.out;
}
9、右键自己创建工程,然后点击New —> Source File
创建.cc文件。
10、在红框所圈处以xx.cc
格式为自己的.cc文件命名,完成后点击Finish
即可实现.cc文件的创建。
11、打开.cc文件,在如下界面写自己的代码。
(注:示例代码如下)
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
/**
* 类Txc1继承cSimpleModule,在Tictoc1 网络结构中,tic和toc斗士Txc1类的实例,
* 他们在仿真程序开始运行的时候就会被创建
*/
class Txc1 : public cSimpleModule
{
protected:
//重定义下面的虚函数
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
// 定义的类Txc1都需要在OMNET++注册后才可以被使用
Define_Module(Txc1);
void Txc1::initialize()
{
// 仿真开始最初运行的程序.
// 引导运行tic-toc-tic-toc进程,
// 其中一个模块需要发送第一条信息,我们让tic先发送。
// 首先判断是tic还是toc,如果是tic
if (strcmp("tic", getName()) == 0) {
// 在out门(gate) 发送第一条信息,我们在message对象中随意发了一个 "tictocMsg"
cMessage *msg = new cMessage("tictocMsg");
send(msg, "out");
}
}
void Txc1::handleMessage(cMessage *msg)
{
// handleMessage()函数:当信息传输到当前module时被唤醒
// 这这个module中的这个函数,我们仅仅从out gate 中发送msg。
// 因为tic和toc都做同样的事情,所以他们会来来回回的互发信息
send(msg, "out"); //发送消息
}
12、右键自己创建工程,然后点击New —> Initialization File
创建.ini文件。
13、在红框所圈处以xx.ini
格式为自己的.ini文件命名,完成后点击Next
。
14、点击Finish
即可完成.ini文件创建。
15、打开.ini文件,点击source
,在如下界面写自己的代码。
(注:示例代码如下)
[General]
network = Tictoc1
16、点击红框中的运行按钮。
17、点击红框中的仿真运行按钮即可开始运行仿真,实验出现实验现象即完成。