⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-suite-realaudio.tcl

📁 这个软件的功能是实现多播协议
💻 TCL
字号:
# -*-	Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-## Copyright (c) 1998 University of Southern California.# All rights reserved.                                            #                                                                # Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute.  The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.# # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.# # $Header: /nfs/jade/vint/CVSROOT/ns-2/tcl/test/test-suite-realaudio.tcl,v 1.2 2000/10/04 06:13:50 kclan Exp $# To run all tests: test-all-realaudio## To view a list of available test to run with this script:# ns test-suite-realaudio.tclproc usage {}  {        global argv0	puts stderr "usage: ns $argv0 realaudio"        exit 1}Class TestSuiteClass Test/realaudio -superclass TestSuiteTestSuite instproc init {} {}Test/realaudio instproc init {} {##global seed packetsize nn cnn plottimeset seed           1set packetsize     245set nn             3             ;# number of nodesset cnn            [expr $nn -2 ]   ;# number of clientsset plottime 15000.0}Test/realaudio instproc run {} {global seed packetsize nn cnn plottimens-random $seed##user start time from a poisson distributionset starttime(2) 0#set tmp [new RandomVariable/Exponential] ;# Poisson process#$tmp set avg_ 5.4674 ;# average arrival interval#artificially syncronize flow start time#every flow starts at multiple of 1.8sset tmp [new RandomVariable/Empirical]$tmp loadCDF userintercdf1for {set i 3} {$i < $nn} {incr i} {    set p [$tmp value]    set i1 [expr $i - 1 ]    set starttime($i) [expr $starttime($i1) + $p ]}##number of sequential flow per userset rv0 [new RandomVariable/Empirical]$rv0 loadCDF sflowcdf##flow durationset rv1 [new RandomVariable/Empirical]$rv1 loadCDF flowdurcdffor {set i 2} {$i < $nn} {incr i} {  set q [$rv0 value]  set sflow($i) [expr int($q) ]#  puts "node $i has $sflow($i) flow "  set p [$rv1 value]  set dur($i) [expr $p * 60 ]#  puts "node $i duration : $dur($i)"}for {set i 2} {$i < $nn} {incr i} {    set flowstoptime($i) [expr $starttime($i) + $dur($i) ]}set ns [new Simulator]for {set i 0} {$i < $nn} {incr i} {set n($i) [$ns node]}set f [open temp.rands w]$ns trace-all $f$ns duplex-link $n(0) $n(1) 1.5Mb 10ms DropTailfor {set j 2} {$j < $nn} {incr j} {    $ns duplex-link $n(0) $n($j) 10Mb 5ms DropTail}set rv2 [new RandomVariable/Empirical]$rv2 loadCDF ontimecdfset rv3 [new RandomVariable/Empirical]$rv3 loadCDF fratecdffor {set i 2} {$i < $nn} {incr i} {  set s($i) [new Agent/UDP]  $ns attach-agent $n(1) $s($i)  set null($i) [new Agent/Null]  $ns attach-agent $n($i) $null($i)  $ns connect $s($i) $null($i)  set realaudio($i) [new Application/Traffic/RealAudio]  $realaudio($i) set packetSize_ $packetsize  $realaudio($i) set burst_time_ 0.05ms  $realaudio($i) set idle_time_ 1800ms  set flow_rate  [$rv3 value]    set r [ format "%fk"  $flow_rate ]#  puts "node $i flow rate $r"  $realaudio($i) set rate_ $r  $realaudio($i) attach-agent $s($i)}for {set i 2} {$i < $nn} {incr i} {      $ns at $starttime($i) "$realaudio($i) start"      $ns at $flowstoptime($i) "$realaudio($i) stop"#      puts "node $i starttime $starttime($i)"#      puts "node $i stoptime $flowstoptime($i)"        ##schedule for next flow      for {set h 2} {$h <= $sflow($i)} {incr h} {          set starttime($i) [expr $flowstoptime($i) + 0.001 ]          set p [$rv1 value]          set dur($i) [expr $p * 60 ]#         puts "node $i duration : $dur($i)"	  set flowstoptime($i) [expr $starttime($i) + $dur($i) ]          set realaudio($i) [new Application/Traffic/RealAudio]          $realaudio($i) set packetSize_ $packetsize          $realaudio($i) set burst_time_ 0.05ms          $realaudio($i) set idle_time_ 1800ms          set flow_rate  [$rv3 value]            set r [ format "%fk"  $flow_rate ]#         puts "node $i flow rate $r"          $realaudio($i) set rate_ $r          $realaudio($i) attach-agent $s($i)                }}$ns at $plottime "close $f"$ns at $plottime "puts \"NS EXITING...\" ; $ns halt"$ns run}TestSuite instproc finish {} {	exec awk {		{			if (($1 == "+") && ($3 == 1) ) \			     print $2, $10		}	} temp.rands > out.tr        exit 0}proc runtest {arg} {        global quiet        set quiet 0	set b [llength $arg]	if {$b == 1} {	        set test $arg        } elseif {$b == 2} {	        set test [lindex $arg 0]            if {[lindex $arg 1] == "QUIET"} {	        set quiet 1            }        } else {	        usage        }	switch $test {		realaudio {                     set t [new Test/$test]                }                default {	             stderr "Unknown test $test"		     exit 1                }         }	 $t run}global argv arg0 runtest $argv

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -