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

📄 web.tcl

📁 对IEEE 802.11e里的分布式信道接入算法EDCA进行改进
💻 TCL
字号:
source ../../../ex/asym/util.tclset WebCScount 0Class WebCSproc createTransfer {ns src dst tcpargs tcptrace sinkargs session sessionargs doneargs xfersz} {	set tcp [eval createTcpSource $tcpargs]	$tcp proc done {} " $doneargs"	if {$xfersz < 1} {		$tcp set packetSize_ [expr int($xfersz*1000)]	}	set sink [eval createTcpSink $sinkargs]	set ftp [createFtp $ns $src $tcp $dst $sink]	if {$session} {		set newSessionFlag false		set newSessionFlag [eval setupTcpSession $tcp $sessionargs]		setupTcpTracing $tcp $tcptrace $newSessionFlag	}	setupTcpTracing $tcp $tcptrace $session	return $ftp}proc numberOfImages {} {	global numimg	return $numimg}proc htmlRequestSize {} {	global reqsize	return $reqsize}proc htmlReplySize {} {	global htmlsize	return $htmlsize}proc imageRequestSize {} {	global reqsize	return $reqsize}proc imageResponseSize {} {	global imgsize	return $imgsize}WebCS instproc init {ns client server tcpargs tcptrace sinkargs {phttp 0} {httpseq 0} {session false} {sessionargs ""}} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	$self instvar finish_	global WebCScount	incr WebCScount	set ns_ $ns	set phttp_ $phttp	set httpseq_ $httpseq	set session_ $session	# compute transfer sizes	set numImg_ [numberOfImages]	set htmlReqsz_ [htmlRequestSize]	set htmlReplsz_ [htmlReplySize]	set imgReqsz_ [imageRequestSize]	set imgReplsz_ [imageResponseSize]	# create "ftp's" for each transfer	set ftpCS1_ [createTransfer $ns $client $server "TCP/Newreno" $tcptrace $sinkargs $session $sessionargs "$self htmlReqDone" $htmlReqsz_]	set ftpSC1_ [createTransfer $ns $server $client $tcpargs $tcptrace $sinkargs $session $sessionargs "$self htmlReplDone" $htmlReplsz_]	# XXX assume request to be of fixed size regardless of numImg_	# unless HTTP with sequential connections is being employed	if {$httpseq} {		set numImgReq_ $numImg_		for {set i 0} {$i < $numImg_} {incr i 1} {			set ftpCS2_($i) [createTransfer $ns $client $server "TCP/Newreno" $tcptrace $sinkargs $session $sessionargs "$self imgReqDone" $imgReqsz_]		}	} else {		set numImgReq_ 1		set ftpCS2_(0) $ftpCS1_	}	for {set i 0} {$i < $numImg_} {incr i 1} {		if {$phttp} {			set ftpSC2_($i) $ftpSC1_#			if {$i == 0} {#				set ftpSC2_($i) [createTransfer $ns $server $client $tcpargs $tcptrace $sinkargs $session $sessionargs "$self imgReplDone" $imgReplsz_]#			} else {#				set ftpSC2_($i) $ftpSC2_(0)#			}		} else {			set ftpSC2_($i) [createTransfer $ns $server $client $tcpargs $tcptrace $sinkargs $session $sessionargs "$self imgReplDone" $imgReplsz_]		}	}}WebCS instproc start {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	set starttime_ [$ns_ now]	set numImgRecd_ 0	set numImgRepl_ 0	if {$htmlReqsz_ < 1} {		$ftpCS1_ producemore 1	} else {		$ftpCS1_ producemore $htmlReqsz_	}}WebCS instproc htmlReqDone {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	$ftpSC1_ producemore $htmlReplsz_}WebCS instproc htmlReplDone {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	[$ftpCS1_ agent] proc done {} "$self imgReqDone"	[$ftpSC1_ agent] proc done {} "$self imgReplDone"	if {$imgReqsz_ < 1} {		$ftpCS2_($numImgRecd_) producemore 1	} else {		$ftpCS2_($numImgRecd_) producemore $imgReqsz_	}}WebCS instproc imgReqDone {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	if {$httpseq_} {		$ftpSC2_($numImgRepl_) producemore $imgReplsz_		incr numImgRepl_	} else {		for {} {$numImgRepl_ < $numImg_} {incr numImgRepl_ 1} {						$ftpSC2_($numImgRepl_) producemore $imgReplsz_		}	}}		WebCS instproc imgReplDone {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	incr numImgRecd_	if {($numImgRecd_ == $numImg_) || $phttp_} {		$self end	} elseif {$httpseq_} {		$self htmlReplDone	}}WebCS instproc end {} {	$self instvar ns_ 	$self instvar ftpCS1_ ftpCS2_ 	$self instvar ftpSC1_ ftpSC2_	$self instvar numImg_ htmlReqsz_ htmlReplsz_ imgReqsz_ imgReplsz_	$self instvar numImgRecd_ numImgRepl_	$self instvar numImgReq_	$self instvar starttime_ endtime_	$self instvar phttp_ httpseq_ session_	$self instvar finish_	global WebCScount	set endtime_ [$ns_ now]	puts -nonewline stderr "[format "%.3f " [expr $endtime_ - $starttime_]]"	if {$phttp_} {		set nrexmit [[$ftpSC2_(0) agent] set nrexmit_]	} elseif {$session_} {		set nrexmit [[[$ftpSC2_(0) agent] session] set nrexmit_]	} else {		set nrexmit 0		for {set i 0} {$i < $numImg_} {incr i} {			incr nrexmit [[$ftpSC2_($i) agent] set nrexmit_]		}	}	puts -nonewline stderr "$nrexmit "	flush stderr	incr WebCScount -1	if {$WebCScount == 0} {		eval "$finish_"	}#	$ns_ at [expr [$ns_ now] + 3] "$self start"#	[$ftpCS1_ agent] proc done {} "$self htmlReqDone"#	[$ftpSC1_ agent] proc done {} "$self htmlReplDone"}

⌨️ 快捷键说明

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