【NS2】添加mUDP、mUdpSink和mTcpSink模块

根据柯老师的教材可知,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中加入

[html] view plaincopy

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

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

[html] view plaincopy

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

因此也是不能通过的。

2、具体解决方案:

在源代码中

[html] view plaincopy

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

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

[html] view plaincopy

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

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

时间: 2024-10-31 17:15:43

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

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品

step4--->往工程中添加Spring框架---->修改maven的配置文件pom.xml,向工程中添加spring框架的某些模块

1.本文内容: 本文介绍使用maven向自己的项目中添加各种框架的方法,即如何配置maven的pom.xml来让maven帮助管理这些框架(包括Spring.SpringMVC.hibernate框架等等). 2.使用maven向自己的工程中添加框架: 2.1概述 若想使用maven向自己的工程中添加三方框架(如Spring.SpringMVC等),需要先确保你的工程是maven工程,如果你还不知道该如何在myeclipse中建立一个maven web project,请参考相关教程. 2.2使

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

前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链栈化. 关于LSM,旧版本的提供了register_security/mod_reg_security接口用于注册用户的安全模块,register_security注册接口只支持一个的安全模块存在,mod_reg_security 支持注册多个安全模块,不过模块之间的调用需要用户自己维护(也就是不提

在Magento中添加一个自己的支付模块----第一部分

https://code.tutsplus.com/tutorials/create-a-custom-payment-method-module-in-magento-part-one--cms-23464 首先,要对Magento的基础模型创建程序很熟悉: 国外的一个网址:https://code.tutsplus.com/tutorials/magento-custom-module-development--cms-20643: 这个是国内的比较好的博客文章:http://blog.cs

向NS2中添加协议PING

在NS2中增加自己的协议模块一般分一下几个步骤: (1)       添加协议类 (2)       定义协议分组头结构 (3)       编译代码 其实在ns3.35版本中已经有ping协议,此步骤只是为了了解ns2添加协议的一般步骤. 1.  在ping协议中,需要定义自己的控制分组,因此首先需要在ping.h头文件中定义ping的分组头结构,C++代码如下: //在ping协议中定义自己的控制分组 struct hdr_ping { char ret;       //0:从发送者到接收

在ns2.35中添加myevalvid框架

在用ns2进行网络视频通信仿真的时候,先要为我们自己的ns2添加evalvid或者myevalvid框架.其中myevalvid框架是由柯志亨老师整合evalvid和ns2之后得出的新框架,笔者建议大家安装该框架,而不要安装原生的evalvid框架.这样就可以结合柯志亨老师的<ns2仿真实验-----多媒体和无线网络通信>这本书,做配套的实验,比较方便. 网上关于myevalvid框架的安装文章很多,大家可以参考去做,笔者会在本文最后给出相关的链接.本文主要是对myevalvid框架源码中的错

python在Ubuntu添加模块搜索路径

本文我们来分享python添加模块搜索路径的3个方法,另外不补充了篇"为Python添加默认模块搜索路径". 大约有这么几种方法: 1.添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bashrc文件中添加如下类似行: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 2.在site-packages路径下添加一个路径配置文件,文件的扩展名为.pth,内容为要添加的路径即可

php安装后,再添加模块pdo_mysql

windows下,是动态链接库.dll,linux下是.so. linux下,假设php安装在/usr/local/php,php的源码包放在/usr/local/php-5.6.15 去php源码包找扩展 # cd /usr/local/php-5.6.15/ext/pdo_mysql php扩展编译环境 # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config --wit

yii2.0中添加新的模块

比如现在需要添加一个新的hnews模块:复制frontend改名hnews 1.在common文件下的config下的 bootstrap.php 2.修改命名空间 在具体实例的main.config下 修改 3.主要修改的就是这两块,之后就是关联命名空间的修改了.