2022-04-21 Omnet学习笔记(一)

本文档详细介绍了如何使用Omnet++5.2.1创建一个名为Tictoc1的网络,包含两个节点“tic”和“toc”。通过.ned文件定义模块和连接,.cc文件编写模块操作,.ini文件配置仿真环境,最终实现数据包在节点间互相传递的仿真过程。文章提供了每一步的具体操作和示例代码。
摘要由CSDN通过智能技术生成

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、点击红框中的仿真运行按钮即可开始运行仿真,实验出现实验现象即完成。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值