根据柯老师的教材可知,mUDP是UDP的延伸,除了具有UDP的功能外,还能记录所发送的包的信息。mUdpSink可以把接收到的包的信息记录 到文件中。mTcpSink是TCPsink的延伸,除了具有TCPSink功能外,还能记录所发出的包的信息。具体的添加步骤如下:

1.下载mUDP, mUdpSink的文件,要下载的有下列几个文件:
       mudp.ccmudp.hmudpsink.ccmudpsink.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中加入

  1. CCOPT   =  -Wall -Wno-write-strings -fpermissive

编译能通过,但是运行的时候会出现

  1. invalid command name "Agent/TCPSink/mTCPSink"
  2. while executing
  3. "Agent/TCPSink/mTCPSink   creat -o83"

因此也是不能通过的。

2、具体解决方案:

在源代码中

  1. mUdpAgent::mUdpAgent() : id_(0), openfile(0)
  2. {
  3. bind("packetSize_", &size_);
  4. UdpAgent::UdpAgent();
  5. }

UdpAgent::UdpAgent()调用是有问题的,改为:

  1. mUdpAgent::mUdpAgent() :UdpAgent(), id_(0), openfile(0)
  2. {
  3. bind("packetSize_", &size_);
  4. }

重新编译后,运行通过,不会出现1中的问题。

【NS2】添加mUDP、mUdpSink和mTcpSink模块的更多相关文章

  1. 海思3531添加移远EC20 4g模块(转)

    源: 海思3531添加移远EC20 4g模块 Hi3798移植4G模块(移远EC20)

  2. 在 ns-3.25中添加 plc(电力线载波) 模块

    上一篇安装好了 ns-3.25,这里继续往里添加 plc 模块.整理之前现推荐一个网站,大家可以参考. 英属哥伦比亚大学(University of British Columbia,UBC)提供NS ...

  3. 添加属于自己的python模块空间

    在我们学习python的过程中会遇到很多时候,我们需要自己曾经写过的模块,它可能是一个函数或者其他的东西,,,, 下面是我的解决过程,如果你像将自己建立的文件夹当作你存放自己写的模块的地方,你需要将你 ...

  4. php ci下添加一个创建常用的模块和控制器方法

    我这么写是非常不好的 ,这些都可以写在lirbraries里面 (ci就是这么干的) 我这里是自己用 大概一个模型 没那么多讲究 现在core/CodeIgniter.php 文件 if($modle ...

  5. 给linux安全模块LSM添加可链式调用模块(一)

    前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链 ...

  6. 已安装好的tengine编译添加未被安装的模块

    nginx -V 可以查看原来编译时都带了哪些参数 原来的参数: --prefix=/usr/local/tengine 需添加的参数: --with-http_stub_status_module ...

  7. koa2学习笔记02 - 给koa2添加系统日志 —— node日志管理模块log4js

    前言 没有日志系统的后台应用是没有灵魂的, 平时工作中每次我们遇到接口报错的时候, 都会叫后台的童鞋看下怎么回事, 这时后台的童鞋都会不慌不忙的打开一个骚骚的黑窗口. 一串噼里啪啦的命令输进去, 哐哐 ...

  8. 在jsp页面动态添加,删除文本框模块

    jsp代码============ <table class="crud-content-info" > <tr > <td align=" ...

  9. php安装后,再添加模块pdo_mysql,mysqli

    windows下,是动态链接库.dll,linux下是.so. linux下,假设php安装在/usr/local/php,php的源码包放在/usr/local/php-5.6.15 去php源码包 ...

随机推荐

  1. 彻底理解setTimeout()

    之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨,不容易被点解.后面看了<你不知道的javascript-上卷>一书,决定 ...

  2. 【python之路36】进程、线程、协程相关

    线程详细用法请参考:http://www.cnblogs.com/sunshuhai/articles/6618894.html 一.初始多线程 通过下面两个例子的运行效率,可以得知多线程的速度比单线 ...

  3. js图片碎片效果(移动端也适用)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 爬虫之robots.txt

    robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件. 当一个搜索蜘蛛访问一个站点时,它 ...

  5. spring cloud深入学习(二)-----服务注册中心spring cloud eureka

    服务治理 主要用来实现各个微服务实例的自动化注册与发现,为啥需要这玩意呢?在一开始比如A系统调用B服务,可能通过手工维护B服务的实例,并且还得采用负载均衡等方式,这些全部都得需要手工维护,等后面系统越 ...

  6. spring的基于xml的AOP配置案例和切入点表达式的一些写法

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  7. git中的错误

    ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@gitee.co ...

  8. 基于 DataLakeAnalytics 的数据湖实践

    随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析.这样的好 ...

  9. JZOJ 5459 购物

    Description X 城的商场中,有着琳琅满目的各种商品.一日,小X 带着小Y 前来购物,小Y 一共看中了n件商品,每一件商品价格为Pi.小X 现在手中共有m个单位的现金,以及k 张优惠券.小X ...

  10. Codeforces 113B

    题目链接 B. Petr# time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...