安装完成inet后自然就要对inet进行使用,比如新建一个项目,然后慢慢的调试,最起码的hello world!要能运行才行。

inet究竟是啥?为啥离不开omnet++,虽然这个本身就是一个废话,inet本身就是基于omnet++建立的,能离开omnet++吗?但有时候对废话理解的加深可以更加清晰软件的定位。

inet就是一组模块,这组模块替代了omnet++上的原生开发,将网络变成了可拼凑的模组,这样,使用者只需要知道一些脚本,用这些脚本简单的调用或者配置这些模组,即可完成自己的网络仿真。

最好的体验过程就是打开inet官网,查看用户手册,调试里面的例子,官网上有很多toturials,但是建议先不要直接去看那里,因为,里面都是写好的,调试要一点一点的增加难度,过度的依赖完整的程序,可能会导致只能背诵程序,机械的记忆,肯定不如交互的学习效果好!但也不要上来就独立创造,那需要很长时间的积累才有感觉,否则很难读懂这种软件的设计思想,最终挑战的只是自己的固执!

按照顺序阅读,会发现没几段,就会读到networks章节,整体上介绍了inet都涉及到了哪些网络元素,比如,adhochost,standardhost,route,switch等等,这些组件都设计好了,且配置好了,用户只要使用脚本语言设置网络节点的功能就可以了,比如,standardhost就等价于我们手中的一台计算机,可以设置各种软件协议,通过类似*.host1.app[0].typename = "UdpBasicApp"等脚本配置就可以设置在一台standardhost上添加一个基于udp协议的基础应用。

使用过NS3后就会发现,omnet++的设计最初看上去很人性化,但是使用起来本省并没有NS3简单。NS3直接集成好相应的模块,节点设计多以容器的思想,新的协议,功能都可以采用安装的形式追加,只是追加一种全新协议的时候相对要注意的很多,但是对于programmer都不是问题,但是omnet++要想和NS3一样,就不得不自己独立的安装inet这种并且,除了要使用C++以外,还要记住ned,理解ned与C++的关联,还要试着补充inet框架,最后还要学会配置ini文件,相比之下,学习成本也会提高很多。可能会剩下一个可视化的有点吧,至少表面上看是这个样子的。

调试inet项目,首先需要知道在哪里可以添加,或者新建的项目,理论上,可以任意位置,但是需要在package内进行说明,明确引用位置就可以,具体可以参考example里面的package.ned,这次没有那么无聊,追加的文件就就近和inet的源码建立在一起了,方便以后对inet进行扩展开发做好准备!

我追加的文件名即为Mycase,Mycase2,Mycase3,相应的ini文件对应着omnetpp,omnetpp2,omnetpp3,当然名字叫什么都可以,只需要在run as里面配置一下就可以了,这个真实so easy的!

在 user's guide 内,给出的第一个例子就是wired的例子,

其实ned的源码照抄就可以了,这次要做的就是让其跑起来,现在不配置ini文件也可以,做多就是没啥功能呗,在输入源码的时候就会发现了,eclipse will tell you,全是错误,这个就是最起码的调试了,没有引用包的缘故,在inet内寻找很麻烦,一个树状结构,根据内容大海捞针,但是inet官网上提供了一些api文档这个就有用了。

例如:https://doc.omnetpp.org/inet/api-current/neddoc/inet.physicallayer.ieee80211.packetlevel.Ieee80211RadioMedium.html

在上面这个地址就可以找全import内容了,就在这个位置就能看到

根据ned文件中的数据类型,就看可以找到对应的import了,这个有线网络仿真的项目找全了就是这个样子的。

剩下的就是配置ini文件了

[General]
network =inet.Mycase
*.numClients = 10
*.client[*].numApps = 1
*.client[*].app[0].typename="TcpSessionApp"
*.client[*].app[0].connectAddress="server"
*.client[*].app[0].connectPort=1000
*.client[*].app[0].sendBytes=1MB
*.server.numApps = 1
*.server.app[0].typename="TcpEchoApp"
*.server.app[0].localPort=1000
network就是指定ned中网络的名字,inet是包空间名字,Mycase就是自己建立的文件了,剩下的就是网络中各种节点的配置了,先看第一个“*”,这个“*”就等价于C++这种面向对象语言中的this指针了。后面的“*”就是通配符了,代表了any。

*.numClients = 10 代表ned文件中的parameters的设置。

*.client[*].numApps = 1选定了所有client,这里代表选定了所有的StandardHost节点,为每个节点指定app数量。

*.client[*].app[0].typename="TcpSessionApp"为app指定应用,很显然是个Tcp应用,至于"TcpSessionApp"就只能记住了。

app[0]中的0代表应用从0开始索引的。

*.client[*].app[0].connectAddress="server"
*.client[*].app[0].connectPort=1000

这部分就是配置了应用传输层的一些内容。

*.client[*].app[0].sendBytes=1MB

设置了应用的容量。

*.server.numApps = 1
*.server.app[0].typename="TcpEchoApp"
*.server.app[0].localPort=1000

与上雷同,就是配置在服务器端了。都配置好后,执行结果如下:

通过上述思路的配置成功的还有下面这两部分内容,一部分是wireless的,另一部分是adhoc的

剩下的就是怎样进行数据统计,毕竟可视化只是加强理解的一种方式,还是需要对统计结果进行分析的。

但是统计结果怎样分析呢?未完待续!

参考文献:

https://inet.omnetpp.org/docs/users-guide/ch-networks.html

omnetpp 添加inet_inet 初探相关推荐

  1. design php 如何使用ant_Ant Design Pro初探—添加面包屑

    Ant Design Pro初探-添加面包屑 上次咱们说了新建页面!页面建成了,开始填充页面 新建面页面不会的看上一片文章:Ant Design Pro初探-新建页面 首先是需要添加家面包屑,上代码: ...

  2. 初探UE4——用Maya为Mixamo上下载的模型和动作骨骼添加根运动节点

    初探UE4--用Maya为Mixamo上下载的模型和动作骨骼添加根运动节点 准备工具 零.修改坐标轴 一.添加静态骨骼根节点 二.为骨骼动画添加跟随运动的root结点 总结 准备工具 1.建模工具:M ...

  3. poky linux初探 -- 添加自己的内核食谱

    http://www.pokylinux.org/ poky是一个distribution,采用 openembedded 构建,包含一个基于GNOME的embedded linux software ...

  4. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  5. python argparse_Python 命令行之旅:初探 argparse

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 前言 你是否好奇过在命令行中敲入一段命令后,它是如何被解析执行的?是否考虑过由自己实现一个命令行工具,帮你执行和处理任 ...

  6. 【JavaScript从入门到精通】第一课 初探JavaScript魅力-01

    第一课 初探JavaScript魅力-01 JavaScript是什么 如今我们打开一个大型的网站,都会有很多JS效果的功能和应用.对于学过CSS+HTML的同学,即使是像淘宝那样的网站,用一两天时间 ...

  7. 十九、Android Activity初探

    原文:十九.Android Activity初探 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供 ...

  8. Maven初探-如何快速入手一个项目

    这已是一个工具的时代,而不是一个到处搜集JAR的年代,如果还在为搭建一个项目而到处找依赖,那你就彻底OUT了.下面,跟各位一起重温学习下Maven. 什么是Maven Maven项目对象模型(POM) ...

  9. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

最新文章

  1. OpenCV相机运动估计
  2. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、...
  3. WordPress后台的文章、分类,媒体,页面,评论,链接等所有信息中显示ID并将ID设置为第一列...
  4. C#中的序列化和反序列化
  5. Android JSON数据与实体类之间的相互转化-------GSON的简单用法
  6. 对话框应用程序的DoModal()源代码
  7. KITTI数据集解读
  8. 空间点与直线距离算法
  9. Ubuntu 9.04 解决没有声音的问题 (Realtek声卡)
  10. android ps1 变量配置,安卓ps模拟器ePSXe使用图文教程
  11. linux怎么查看hwaddr_linux如何查看mac地址_查看linux的mac地址_linux 查看mac地址
  12. 批量同时创建邮箱和AD账户
  13. 一年时间,拿到了人生中的第一个20万
  14. php源码dede,php网站管理系统 DedeCMS v5.7 SP2 UTF8 20180109正式版
  15. comboFM: leveraging multi-way interactions for systematic prediction of drug combination effects
  16. 004永磁同步电机的工作原理:大白话详细讲解从最简单的直流有刷电机到永磁同步电机是如何转动起来的
  17. (八)理解迭代思维(80)
  18. 面对百亿数据,HBase为什么查询速度依然非常快?
  19. text函数提取年月
  20. 5分钟搞定OKR工作法

热门文章

  1. vue+element-ui+富文本————图片上传
  2. 关于亚马逊Listing类目排名以及卡位销售问题值得卖家收藏!
  3. 吐血分享 HID 2个接口设备的描述符代码
  4. KDZD8119高压漏电起痕试验机
  5. 第四回-MBR加载与执行实验
  6. OBS(open build service)入门
  7. 删除带头结点单链表中倒数第k个结点
  8. 楼宇可视门禁系统的功能和优点
  9. 西门子PLC smart200伺服液压PID昆仑通态人机界面一套完整项目程序
  10. IDEA中出现XXXis not assignable to ‘javax.servlet.Servlet,jakarta.