发现网上大部分是讲INET安装,少有几篇讲的是INET的示例,但是怎么实现自己的定制化节点,网络设计,并没有得到很好的解决。本文,自己将把定制化的学习过程分享给大家。

ps.某学院有个499的课,不知道会不会讲自定制节点等知识(看它课程目录,感觉拿着开源赚钱,有点…反正我也没钱买),现在就自己琢磨下。

1.学习分析inet4.3/tutorials/wireless文件夹里的文件,因为它包含了单纯的点对点无线传输。

(1)WirelessA.ned文件
作用:定义节点和位置:即定义(节点+拓扑)

package inet.tutorials.wireless;//表明本文件的位置
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;//调用的子模块
import inet.node.inet.INetworkNode;//调用的子模块
import inet.physicallayer.wireless.common.contract.packetlevel.IRadioMedium;//调用的子模块
import inet.visualizer.contract.IIntegratedVisualizer;//调用的子模块network WirelessA
{parameters:@display("bgb=650,500;bgg=100,1,grey95");//显示有关不重要@figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue);//显示有关不重要@figure[rcvdPkText](type=indicatorText; pos=380,20; anchor=w; font=,18; textFormat="packets received: %g"; initialValue=0);//显示接收到的数据@statistic[packetReceived](source=hostB.app[0].packetReceived; record=figure(count); targetFigure=rcvdPkText);submodules://以下全部就是节点的定义visualizer: <default(firstAvailableOrEmpty("IntegratedCanvasVisualizer"))> like IIntegratedVisualizer if typename != "" //调用的子模块:显示界面相关{@display("p=580,125");//显示在界面上}configurator: Ipv4NetworkConfigurator //调用的子模块:IPV4协议相关{@display("p=580,200");//显示在界面上}radioMedium: <default("UnitDiskRadioMedium")> like IRadioMedium //调用的子模块:信道{@display("p=580,275");//显示在界面上}hostA: <default("WirelessHost")> like INetworkNode //调用的子模块:无线节点{@display("p=50,325");//显示在界面上}hostB: <default("WirelessHost")> like INetworkNode //调用的子模块:无线节点{@display("p=450,325");//显示在界面上}
}

(2)omnetpp.ini文件
作用:进一步配置网络:节点+拓扑

[Config Wireless01]
description = Two hosts communicating wirelessly
network = WirelessA//进一步配置网络
sim-time-limit = 20s//仿真时间
//进一步配置节点
*.host*.ipv4.arp.typename = "GlobalArp"
//进一步配置节点A
*.hostA.numApps = 1
*.hostA.app[0].typename = "UdpBasicApp"
*.hostA.app[0].destAddresses = "hostB"
*.hostA.app[0].destPort = 5000
*.hostA.app[0].messageLength = 1000B
*.hostA.app[0].sendInterval = exponential(12ms)
*.hostA.app[0].packetName = "UDPData"
//进一步配置节点B
*.hostB.numApps = 1
*.hostB.app[0].typename = "UdpSink"
*.hostB.app[0].localPort = 5000
//进一步配置节点
*.host*.wlan[0].typename = "AckingWirelessInterface"
*.host*.wlan[0].mac.useAck = false
*.host*.wlan[0].mac.fullDuplex = false
*.host*.wlan[0].radio.transmitter.communicationRange = 500m//通信距离
*.host*.wlan[0].radio.receiver.ignoreInterference = true
*.host*.wlan[0].mac.headerLength = 23B
//进一步配置节点
*.host*.**.bitrate = 1Mbps

(3)如上,借鉴INET的框架,网络的节点和拓扑都简单就写得明明白白。但是!但是节点怎么执行代码呢?毕竟我们是要定制化协议的,我们在tictoc工程中学到的.cc+.h文件在哪里呢?这才是难到很多人的点---------继续上述分析:inet4.3/tutorials中还有一个文件package.ned文件
作用:不详,但是没它不行,后续搞懂了再补充它吧

package inet.tutorials;

(4)点开inet/networklayer/configurator/ipv4/Ipv4NetworkConfigurator查看源码(是.cc和.h文件),因为此文件在WirelessA.ned中调用了
作用:定义了Ipv4NetworkConfigurator模块的具体内容,一堆包含文件,说明它也依赖于别的文件

#include "inet/networklayer/configurator/ipv4/Ipv4NetworkConfigurator.h"
#include <set>
#include "inet/common/INETUtils.h"
#include "inet/common/ModuleAccess.h"
#include "inet/common/XMLUtils.h"
#include "inet/common/stlutils.h"
#include "inet/networklayer/common/L3AddressResolver.h"
#include "inet/networklayer/common/NetworkInterface.h"
#include "inet/networklayer/contract/IInterfaceTable.h"
#include "inet/networklayer/ipv4/IIpv4RoutingTable.h"
namespace inet
{Define_Module(Ipv4NetworkConfigurator);//这就是我们在WirelessA.ned调用的模块*****//一堆巨人的肩膀*****
}

(5)点开inet/node/inet/INetworkNode查看源码(是个.ned文件),因为此文件在WirelessA.ned中调用了

package inet.node.inet;//表示自己这个文件的位置
moduleinterface INetworkNode
{parameters:@display("bgb=,448");@networkNode;@labels(node,ethernet-node,wireless-node);
}

(6)按照5和6的步骤,完成了所有直接调用文件的查看,分为.cc.h文件和.ned文件。文件中各自还有大量的引用依赖
总结:根据以上的分析,自定制的过程是:(名字随意)
1.写自己的test_self.ned文件。定义节点NODE_SELF1:调用相应子模块,但是由于需要自定值功能,因此应该还需要在子模块的基础上增加新的代码
2.写自己的test_self.ini文件。进一步配置网络
3.运行仿真
(7)验证
验证放在下一文章,还在验证中。。。。。。

INET的定制使用OMNET++相关推荐

  1. 【OMNeT+INET】详解OMNeT开源库INET(一)

    1.前言 在我看来,网络模拟器是用于评估目标系统性能和能力的方便工具,不同的设计方案,在不同的配置下不同的操作条件和运行场景下,可以用于帮助理解系统并获得与性能相关的参数(例如吞吐量.延迟.稳定性.健 ...

  2. 【OMNeT+INET】浅谈OMNeT开源库INET(二)

    [前言] 更多讨论欢迎加入学习QQ群:157696125 本文试图以简明的方式,结合实际项目使用需求,从几个角度对开源库INET进行简要说明:希望可对各位研究生同学和开发人员有益参考:对于其中可能存在 ...

  3. omnetpp 添加inet_inet 初探

    安装完成inet后自然就要对inet进行使用,比如新建一个项目,然后慢慢的调试,最起码的hello world!要能运行才行. inet究竟是啥?为啥离不开omnet++,虽然这个本身就是一个废话,i ...

  4. OMNET++ INET框架学习教程(一)

    OMNET++ INET框架学习教程(一) 一.写在最前面 二.INET框架的前置知识 三.INET框架的安装 四.来一个最简单的例子吧- 目标:两个主机以无线的方式传输. 我们先看NED文件,该文件 ...

  5. WindowsXp 平台安装Oversim+INET+OMnet++

    之前以为Oversim在LINUX系统下会好用一点,就花了半天的时间装虚拟机VMware,Ubuntu,再在ubuntu上装这三个软件.结果出现了以下的warning,编译也解决不了,还有遇到很多问题 ...

  6. OMNET++ INET官方实例(1)

    Step 1. Pinging after OSPF convergence 网络拓扑结构定义(OspfNetwork) 信道:PppLink100M PppLink10M configurator: ...

  7. OMNET++ INET官方实例(2)

    无线实例 在第一步中,我们建立了一个非常基本的网络,其中包含两个处于通信范围内的节点.通信范围内的两个节点,进行数据交换.我们演示如何配置带有应用程序的节点 应用,将它们放置在物理环境中,为它们分配I ...

  8. 在inet下写一个“HelloWorld”程序

    写在最前 由于要用别人的项目代码来进行仿真,却不知道如何新建一个项目来跑自己的网络,故写下这篇文章.在inet的基础上,运行一个example上的例子. 新建omnet++项目 新建test项目,em ...

  9. 12.17-Linux系统定制

    12.17 任务目标 // 进度: Linux系统定制 工作结果: 学习笔记: 2.1.确定系统发行版本号 # uname -r //内核发行号 4.2.3-300.fc23.i686 # uname ...

最新文章

  1. python encodings模块_ImportError:没有名为'encodings'的模块
  2. 使用MongoDB存储Docker日志(续)
  3. 从V.C.Space抄来的
  4. 【百家稷学】从传统方法到深度学习,人脸算法和应用的演变(河南平顶山学院技术分享)...
  5. 高等数学上-赵立军-北京大学出版社-题解-练习2.5
  6. 图论:dij算法优化:双端队列及详细证明
  7. 文件下载时,文件名乱码问题
  8. 【远程沟通】“云答辩”“云招聘”双管齐下,解救“最难毕业生”
  9. 中小型互联网企业迁移上云,保证云端资源安全迁移
  10. cisco初级随堂笔记2
  11. STM32 - 高级定时器的设定 - 基础-05 - 输出波形控制 -Complementary outputs and dead-time insertion 相位调整@互补输出和死区控制
  12. 解决文件夹无限嵌套无法删除的问题---最新办法
  13. 设计模式网上资料整合理解——行为型模式(一)
  14. 迅捷音频转换器怎么使用?
  15. 文字图片灰度化matlab,采用matlab将图像灰度化的方法
  16. 开机启动时间计算机,Windows系统更改开机启动时间三种方法
  17. 阿里云ECS centos8连接可视化界面
  18. 苹果试玩换个新id行不_关于更换苹果ID的事
  19. 规则引擎-drools-5-决策表
  20. ssh远程安装teamviewer与正在连接...问题解决方法

热门文章

  1. 叮咚谁呀我是送信的邮递员呀_幼师必备|幼儿园冬季室内游戏
  2. Java中JFrame窗口添加背景图片
  3. 国民经济行业代码查询系统-公司行业代码查询
  4. Vue非父子组件传值+案例cnode首页
  5. 12306抢票:极限并发带来的思考
  6. 驾驶员考试计算机辅助教学系统藏汉又(4),学科考试题库及维,汉模拟考试系统...
  7. 省份城市区县三级联动html代码,JavaScript实现省份城市的三级联动
  8. qtp 连接mysql_qtp 怎样连接mysql数据库操作_MySQL
  9. 一文看懂麒麟9000:153亿晶体管,刷新5G速度,还有更强游戏体验,并且会“继续前行”...
  10. 51单片机的PID水温控制器设计