摘要: NS2.34在Makefile里面修改CCOPTcd ns-allinone.2.34/ns2.34vim Makefile修改前:1 CCOPT = -Wall -Wno-write-strings 修改后:1 CCOPT = -Wall -Wno-write-strings -g然后make cleanmake dependmake在make depend时,出现错误make: *** 没有规则可以创建“depend”需要的目标“tcp/linux/tcp_naivereno.cc”。 停止。没理会,然后直接make。最后可以在gdb下调试ns。 阅读全文
posted @ 2012-03-25 20:43 leealways87 阅读(431) 评论(0) 推荐(0) 编辑
摘要: MobileNode 是基本的ns Node对象,但是又具有自己的特性,比如,移动性。MobileNode类派生自Node类。一、创建节点移动模型 有两种机制可以引起移动节点的运动。第一种,需要明确指定节点的起始位置和终止位置,这些位置指令通常放在一个单独的场景文件中。例如:1 $node set X_ <x1>2 $node set Y_ <y1>3 $node set Z_ <z1>4 $ns at $time $node setdest <x2> <y2> <speed> 在$time时刻,节点按照设定的速度从起始位 阅读全文
posted @ 2012-03-25 13:46 leealways87 阅读(2440) 评论(0) 推荐(0) 编辑
摘要: sed是基于字符流的编辑器。 要想很好的运用sed这一神器,必须懂得它的三个原理:1、脚本中的所有编辑命令都将依次应用于每个输入行(也就是说sed是隐式全局的);2、命令应用于所有的行(全局的),除非程序员限制;3、原始的输入文件并没有改变,编辑命令修改了原始文件的备份,并且将此备份发送到标准输出。sed执行顺序是将所有编辑命令应用于第一行,处理结束之后再应用于第二行,依次类推,与我之前认为的相反。sed维护一个模式空间,也就是临时缓冲区,在应用编辑命令时,将文件的某一行存储在模式空间中,然后依次应用编辑命令。在sed中一般用单引号将指令包围起来,单引号可以阻止shell解释编辑指令中的特殊字 阅读全文
posted @ 2012-03-21 23:50 leealways87 阅读(761) 评论(0) 推荐(0) 编辑
摘要: 代码如下: 1 #include <unistd.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int 6 main(void) 7 { 8 int i = 0; 9 pid_t fpid;10 printf("i\tson/pa\tppid\tpid\tfpid\n");11 12 for(i = 0; i < 2; i++) {13 fpid = fork();14 if(fpid == 0)15 printf("%d\tchild\t%4... 阅读全文
posted @ 2012-03-21 15:23 leealways87 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 互斥锁顾名思义,锁是用来锁住某种东西的,锁住之后只有有钥匙的人才能对锁住的东西拥有控制权(把锁砸了,把东西偷走的小偷不在我们的讨论范围了)。所谓互斥,从字面上理解就是互相排斥。因此互斥锁从字面上理解就是一点进程拥有了这个锁,它将排斥其它所有的进程访问被锁住的东西,其它的进程如果需要锁就只能等待,等待拥有锁的进程把锁打开后才能继续运行。在实现中,锁并不是与某个具体的变量进行关联,它本身是一个独立的对象。进(线)程在有需要的时候获得此对象,用完不需要时就释放掉。互斥锁的主要特点是互斥锁的释放必须由上锁的进(线)程释放,如果拥有锁的进(线)程不释放,那么其它的进(线)程永远也没有机会获得所需要的互斥 阅读全文
posted @ 2012-03-21 12:53 leealways87 阅读(476) 评论(0) 推荐(0) 编辑
摘要: GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者 proc3 呢?实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。 如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实我们可以利用GDB的特点或者其他一 阅读全文
posted @ 2012-03-17 16:40 leealways87 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 命令用法:cut -b list [-n] [file ...]cut -c list [file ...]cut -f list [-d delim][-s][file ...]l上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);llist表示-b、-c、-f操作范围,-n常常表示具体数字;lfile表示的自然是要操作的文本文件的名称;ldelim(英文全写:delimiter)表示分隔符,默认情况下为TAB;l-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)上面三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(- 阅读全文
posted @ 2012-03-14 22:53 leealways87 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 根据APUE写线程代码阿,出现如下错误:1 test_pthread_create.c:(.text+0x2e6): undefined reference to `pthread_create'原因是没有链接libthread.a库文件,所以编译方法是:1 $ gcc -lpthread test_pthread_create.c 阅读全文
posted @ 2012-03-04 14:45 leealways87 阅读(115) 评论(0) 推荐(0) 编辑
摘要: NS的类库都是建立于TClCl的基础上,共包含6个:Tcl, TclObject, TclClass, TclCommand, EmbeddedTcl和InstVar.1、Tcl类Tcl类封装的是OTcl解释器真正的实例,并提供访问解释器的方法,Tcl类提供的主要方法如下:a,获得Tcl实例的指针。Tcl &tcl = Tcl::instance();b,通过解释器调用OTcl过程。提供四种方法调用一个OTcl命令,这四种方法在调用参数方面有本质区别,如果解释器返回TCL_OK, 则这些函数将会返回一个相应的OTcl过程,若解释器返回TCL_ERROR,则这些函数将会调用tkerror 阅读全文
posted @ 2012-03-03 20:23 leealways87 阅读(577) 评论(0) 推荐(0) 编辑
摘要: $ns use-newtrace :使用新格式。(语句在$ns_ trace-all $tracefd 之前)new trace格式定义N: Node PropertyI: IP Level Packet InformationH: Next Hop InformationM: MAC Level Packet InformationP: Packet Specific InformationFlag Type Values(r,d,f) s(r,d,f) r Send;r: Receive;d: Drop;f: Forward-t double Time (* For Global Sett 阅读全文
posted @ 2012-03-03 12:53 leealways87 阅读(538) 评论(0) 推荐(0) 编辑