【NS2】添加mUDP、mUdpSink和mTcpSink模块
根据柯老师的教材可知,mUDP是UDP的延伸,除了具有UDP的功能外,还能记录所发送的包的信息。mUdpSink可以把接收到的包的信息记录 到文件中。mTcpSink是TCPsink的延伸,除了具有TCPSink功能外,还能记录所发出的包的信息。具体的添加步骤如下:
1.下载mUDP, mUdpSink的文件,要下载的有下列几个文件:
mudp.cc、mudp.h、mudpsink.cc、mudpsink.h
下载地址:http://140.116.72.80/~smallko/ns2/measure/
2.在 /ns-allinone-2.**/ns-2.** 目录新建measure文件夹,把这四个文件放入其中。
3.修改/ns-allinone-2.**/ns-2.**/common/packet.h,把如下程序加入struct
hdr_cmn{}中。
int frametype_; //added by smallko
double sendtime_; //
added by smallko
unsigned
int pkt_id_; // added by smallko
unsigned
int frame_pkt_id_; //added by smallko
4.分别在/ns-allinone-2.**/ns-2.**/Makefile和Makefile.in增加如下一行。
xcp/xcpq.o
xcp/xcp.o xcp/xcp-end-sys.o \ // 这行之后
measure/mtcpsink.o measure/mudp.o measure/mudpsink.o
\ //此行为增加的
5.在/ns-allinone-2.**/ns-2.**/tcl/lib/ns-default.tcl增加如下一行。
Delayer set debug_
false // 这行之后
Agent/mUDP
set packetSize_ 1000
//此行为增加的
6.在/ns-allinone-2.**/ns-2.**目录下执行./configure;make
clean;make命令,就OK了。
最近移植柯老师的示例代码measure/mudp 相关的代码,发现了问题,但是网上也没找到解决方法,很多人有相同问题但是没有最后解决。
1、在Makefile中不加 -fpermissive, 会报错误,说mUdpAgent 不能直接调用UdpAgent(),
在makefile中加入
- CCOPT = -Wall -Wno-write-strings -fpermissive
编译能通过,但是运行的时候会出现
- invalid command name "Agent/TCPSink/mTCPSink"
- while executing
- "Agent/TCPSink/mTCPSink creat -o83"
因此也是不能通过的。
2、具体解决方案:
在源代码中
- mUdpAgent::mUdpAgent() : id_(0), openfile(0)
- {
- bind("packetSize_", &size_);
- UdpAgent::UdpAgent();
- }
UdpAgent::UdpAgent()调用是有问题的,改为:
- mUdpAgent::mUdpAgent() :UdpAgent(), id_(0), openfile(0)
- {
- bind("packetSize_", &size_);
- }
重新编译后,运行通过,不会出现1中的问题。
【NS2】添加mUDP、mUdpSink和mTcpSink模块的更多相关文章
- 海思3531添加移远EC20 4g模块(转)
源: 海思3531添加移远EC20 4g模块 Hi3798移植4G模块(移远EC20)
- 在 ns-3.25中添加 plc(电力线载波) 模块
上一篇安装好了 ns-3.25,这里继续往里添加 plc 模块.整理之前现推荐一个网站,大家可以参考. 英属哥伦比亚大学(University of British Columbia,UBC)提供NS ...
- 添加属于自己的python模块空间
在我们学习python的过程中会遇到很多时候,我们需要自己曾经写过的模块,它可能是一个函数或者其他的东西,,,, 下面是我的解决过程,如果你像将自己建立的文件夹当作你存放自己写的模块的地方,你需要将你 ...
- php ci下添加一个创建常用的模块和控制器方法
我这么写是非常不好的 ,这些都可以写在lirbraries里面 (ci就是这么干的) 我这里是自己用 大概一个模型 没那么多讲究 现在core/CodeIgniter.php 文件 if($modle ...
- 给linux安全模块LSM添加可链式调用模块(一)
前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链 ...
- 已安装好的tengine编译添加未被安装的模块
nginx -V 可以查看原来编译时都带了哪些参数 原来的参数: --prefix=/usr/local/tengine 需添加的参数: --with-http_stub_status_module ...
- koa2学习笔记02 - 给koa2添加系统日志 —— node日志管理模块log4js
前言 没有日志系统的后台应用是没有灵魂的, 平时工作中每次我们遇到接口报错的时候, 都会叫后台的童鞋看下怎么回事, 这时后台的童鞋都会不慌不忙的打开一个骚骚的黑窗口. 一串噼里啪啦的命令输进去, 哐哐 ...
- 在jsp页面动态添加,删除文本框模块
jsp代码============ <table class="crud-content-info" > <tr > <td align=" ...
- php安装后,再添加模块pdo_mysql,mysqli
windows下,是动态链接库.dll,linux下是.so. linux下,假设php安装在/usr/local/php,php的源码包放在/usr/local/php-5.6.15 去php源码包 ...
随机推荐
- python numpy.shape 和 numpy.reshape函数
导入numpy模块 from numpy import * import numpy as np ############################################### ...
- hdu4565
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #inc ...
- 从大数据到快数据 数据智创未来——2019 CCF大数据与计算智能大赛正式开赛!
8月17日,以“数据驱动,智创未来”为主题的2019 CCF大数据与计算智能大赛(CCF Computing Intelligence Contest,简称CCF BDCI)全球启动仪式,在北京大学正 ...
- 玩转webpack之webpack的基本知识
相信看了gulp教程的小伙伴肯定都可以很容易的掌握gulp了.它已经没有什么可以值得去思考的东西了,如果你已经看懂它就是单纯的在布置任务,然后利用插件的功能去执行任务.最后发布任务,pipe的理念来和 ...
- C++/CLI 创建WPF程序
本文简单演示下用C++/CLI创建WPF程序,IDE为VS2015 首先创建CLR项目,选择CLR空项目: 然后,右键源文件,选择新建class,选择CLR->Component Class 接 ...
- ucore 物理内存探测 lab2 附录A&B
探测物理内存分布的大小和方法 bootloader 增加的工作 bootasm.S 中对应了 probe_memory 到 finish_probe 的部分. 通过BIOS 中断 获取内存可调用参数为 ...
- RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占优势
美国时间3月4-8日,国际知名信息安全峰会RSA Conference在美国旧金山开幕,云安全及云可以为企业提供更可靠的资产管理方式成为大会热点. 此次峰会共吸引全球700多家机构参展,其中近42%为 ...
- ML面试1000题系列(61-70)
本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 61.说说共轭梯度法? @wtq1993,htt ...
- 错觉-Info:让你难以置信的视错觉
ylbtech-错觉-Info:让你难以置信的视错觉 1.返回顶部 1. 看下图:如果你看到舞者逆时针旋转说明你用左脑,如果看到顺时针旋转说明你用右脑思维. 据说这是耶鲁大学五年的研究成果. 下图 ...
- 学习JDK1.8集合源码之--HashSet
1. HashSet简介 HashSet是一个不可重复的无序集合,底层由HashMap实现存储,故HashSet是非线程安全的,由于HashSet使用HashMap的Key来存储元素,而HashMap ...