NS2已经支持简单的RTP应用了,但是很多人却不知道如何使用。这其中一个主要的原因就是NS2的发行版中自带的RTP示例并不能够正常运行。这个问题好几年前就已经有人提了出来,可是很奇怪的是,一直到现在都没有修改掉,而且还有很多人在不同的论坛上提出同样的问题。没有办法,只有自己动手,丰衣足食。
在安装目录的tcl/ex文件夹下有个simple-rtp.tcl文件,演示了RTP协议的简单应用。但是如果直接运行的话,则可能出现厦门的错误提示:
$ ns simple-rtp.tcl
warning: no class variable Session/RTP::debug_
see tcl-object.tcl in tclcl for info about this warning.
warning: no class variable Session/RTP::debug_
see tcl-object.tcl in tclcl for info about this warning.
warning: no class variable Session/RTP::debug_
see tcl-object.tcl in tclcl for info about this warning.
warning: no class variable Session/RTP::debug_
see tcl-object.tcl in tclcl for info about this warning.
Warning dst_ is no longer being supported in NS. dst_ -2147483648
Use dst_addr_ and dst_port_ instead
这里的提示给出了两个信息,一个是没有类变量Session/RTP::debug_,第二个信息变量使用错误。首先解决第一个问题,在tcl/lib/ns-default.tcl中添加下面一行代码:
Session/RTP set debug_ 0
这里的意思表示默认将调试功能关闭。当然如果需要调试功能的时候,可以在TCL脚本中将此值设置为1或者“ON”。
第二个问题是在tcl/rtp/session-rtp.tcl文件中修改join-group函数,修改代码如下:
Session/RTP instproc join-group { g } {
set g [expr $g]
$self set group_ $g
mvar node_ dchan_ cchan_
$dchan_ set dst_addr_ $g
$node_ join-group $dchan_ $g
incr g
$cchan_ set dst_addr $g
$node_ join-group $cchan_ $g
}
最后要注意的是,必须重新编译NS2
,修改的代码才会起作用。
重新编译后,再运行这个simple-rtp.tcl文件就没有问题了。
上一个NAM模拟运行的图:
从图中并没有看出有什么不同的地方,因为这里传输的都是数据(黑色)。当然这里只是一个演示,具体的分析信息还是要看Trace文件,可以看到其它类型的报文信息。
BTW: 由于是在Windows下使用Cygwin编译的NS2,所以为了使用NAM,装了X,可是在运行的时候却出现了下面的错误信息:
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
(II) XF86Config is not supported
(II) See http://x.cygwin.com/docs/faq/cygwin-x-faq.html for more information
winAdjustVideoModeShadowGDI - Using Windows display depth of 32 bits per pixel
winAllocateFBShadowGDI - Creating DIB with width: 1280 height: 800 depth: 32
......
XFree86-Bigfont extension local-client optimization disabled due to lack of shared memory support in the kernel
(--) Setting autorepeat to delay=500, rate=31
(--) winConfigKeyboard - Layout: "00000804" (00000804)
(EE) Keyboardlayout "中文 (简体) - 美式键盘" (00000804) is unknown
(--) 3 mouse buttons found
Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list!
winInitMultiWindowWM - pthread_mutex_lock () returned.
winProcEstablishConnection - Hello
......
重新安装Cygwin没有解决这个问题,在网上搜索也没有找到解决方案。无意中打开了Xming,结果在启动X失败后,Xming打开了X窗口。现在也没有心思去琢磨背后是什么原因引起的,如果有谁知道的话,麻烦告知一声。
- 大小: 7.2 KB
分享到:
相关推荐
NS2新的RTP协议
2 1 简单多播音频会议( Simple Multicast Audio Conference) 2 2 音频和视频会议(Audio and Video Conference) 2 3 混频器和转换器(Mixers and Translators) 2 4 分层编码(Layered Encodings) 3 ...
RTP协议原理及工作机制 RTP协议关键技术指标 RTP协议应用方案之单播 RTP协议应用方案之广播 RTP协议应用方案之组播
rtp2mp4-rtp h264 acc 合成MP4.zip
RFC3550中文版( RTP:实时应用程序传输协议)
RFC3550 rtp协议中文介绍rtsp介绍 rtsp流媒体协议。
2 1 简单多播音频会议( Simple Multicast Audio Conference) 2 2 音频和视频会议(Audio and Video Conference) 2 3 混频器和转换器(Mixers and Translators) 2 4 分层编码(Layered Encodings) 3 ...
rtp协议规范文档, 中文描述,用于rtp应用开发
一个简单的RTP服务器,rtp部分是纯C实现,编码则是利用了FFmpeg库
rtp2jpegAndjpeg-9a.rtp传输jpeg图片到vlc实时播放
资源为RFC3550标准文档,RTP实时应用程序传输协议
一个简单的基于RTSP/RTP的流媒体服务器,是学习流媒体服务器的入门程序。
应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表...
RFC3550协议标准的中文翻译版,描述RTP实时应用程序传输协议
1,这是封装jrtp后使用的rtp库的调用 2,存在客户端与服务端
RTP中文版 实时流协议(RTSP) RTP:实时应用程序传输协议
直接在QT中进行视频采集,将采集到的视频帧使用rtp进行传输,收到视频帧在QT界面上回显.
.NET 解析rtp数据包,c#解析rtp包
通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行解析,得出h264裸流,并保存为文件。 我这里有一段rtp流文件,作为演示使用(这个文件有点不标准,一般一个nal打一个...
这个资源是关于264标准中RTP封装的实现,描述的很详细