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

📄 http-ex.tcl

📁 跑leach需要的
💻 TCL
字号:
#!/bin/sh# the next line finds ns \nshome=`dirname $0`; [ ! -x $nshome/ns ] && [ -x ../../ns ] && nshome=../..# the next line starts ns \export nshome; exec $nshome/ns "$0" "$@"if [info exists env(nshome)] {	set nshome $env(nshome)} elseif [file executable ../../ns] {	set nshome ../..} elseif {[file executable ./ns] || [file executable ./ns.exe]} {	set nshome "[pwd]"} else {	puts "$argv0 cannot find ns directory"	exit 1}set env(PATH) "$nshome/bin:$env(PATH)"#source $nshome/tcl/lan/ns-lan.tclsource $nshome/tcl/http/http.tclset opt(trsplit) "-"set opt(tr)	outset opt(namtr)	""set opt(stop)	20set opt(node)	3set opt(seed)	0set opt(bw)	1.8Mbset opt(delay)	1msset opt(ll)	LLset opt(ifq)	Queue/DropTailset opt(mac)	Mac/Csma/Cdset opt(chan)	Channelset opt(tcp)	TCP/Renoset opt(sink)	TCPSink# number of traffic source (-1 means the number of nodes $opt(node))set opt(telnet) 0set opt(cbr)	0set opt(ftp)	0set opt(http)	-1set opt(webModel) $nshome/tcl/http/dataset opt(maxConn) 4set opt(phttp) 0if {$argc == 0} {	puts "Usage: $argv0 \[-stop sec\] \[-seed value\] \[-node numNodes\]"	puts "\t\[-tr tracefile\] \[-g\]"	puts "\t\[-ll lltype\] \[-ifq qtype\] \[-mac mactype\]"	puts "\t\[-bw $opt(bw)] \[-delay $opt(delay)\]"	exit 1}proc getopt {argc argv} {	global opt	for {set i 0} {$i < $argc} {incr i} {		set key [lindex $argv $i]		if ![string match {-*} $key] continue		set key [string range $key 1 end]		set val [lindex $argv [incr i]]		set opt($key) $val		if [string match {-[A-z]*} $val] {			incr i -1			continue		}		switch $key {			ll  { set opt($key) LL/$val }			ifq { set opt($key) Queue/$val }			mac { set opt($key) Mac/$val }		}	}}proc finish {} {	global env nshome pwd	global ns opt trfd	$ns flush-trace	close $trfd	foreach key {node bw delay ll ifq mac seed} {		lappend comment $opt($key)	}	exec perl $nshome/bin/trsplit -tt r -pt tcp -c "$comment" \			$opt(trsplit) $opt(tr) >& $opt(tr)-bw	exec head -1 $opt(tr)-bw >@ stdout	if [info exists opt(g)] {		catch "exec xgraph -nl -M -display $env(DISPLAY) \				[lsort [glob $opt(tr).*]] &"	}	exit 0}proc create-trace {} {	global ns opt	if {[info exists opt(f)] || [info exists opt(g)]} {		set opt(trsplit) "-f"	}	if [file exists $opt(tr)] {		exec touch $opt(tr).		eval exec rm -f $opt(tr) $opt(tr)-bw [glob $opt(tr).*]	}	set trfd [open $opt(tr) w]	$ns trace-all $trfd	if {$opt(namtr) != ""} {		$ns namtrace-all [open $opt(namtr) w]	}	return $trfd}proc create-topology {} {	global ns opt	global lan node source	# Nodes:	#  0		a router from LAN to external network	#  1 to n	nodes on the LAN	#  n+1		node outside of the LAN,	set num $opt(node)	set node(0)  [$ns node]	for {set i 1} {$i <= $num} {incr i} {		set node($i) [$ns node]		lappend nodelist $node($i)	}	set node($i) [$ns node]	$ns duplex-link $node(0) $node($i) 10Mb 50ms DropTail	set lan [$ns newLan $nodelist $opt(bw) $opt(delay) -llType $opt(ll) \			-ifqType $opt(ifq) -macType $opt(mac)]	$lan addNode $node(0) $opt(bw) $opt(delay)	set ifq0 [[$lan netIface $node(0)] set ifq_]	$ifq0 set limit_ [expr $opt(node) * [$ifq0 set limit_]]}proc create-source {} {	global ns opt	global lan node source	if {$opt(webModel) != ""} {		create-webModel $opt(webModel)	}	# make node($num+1) the source of all connection	set src $node(0)	foreach ttype {http ftp cbr telnet} {		set num $opt($ttype)		if {$num < 0} {			set num $opt(node)		}		for {set i 0} {$i < $num} {incr i} {			set dst $node([expr 1 + $i % $opt(node)])			new_$ttype $i $src $dst		}	}}proc create-webModel path {	Http setCDF rvClientTime 0#	Http setCDF rvClientTime $path/HttpThinkTime.cdf	Http setCDF rvReqLen $path/HttpRequestLength.cdf	Http setCDF rvNumImg $path/HttpConnections.cdf	set rv [Http setCDF rvRepLen $path/HttpReplyLength.cdf]	Http setCDF rvImgLen $rv}proc new_http {i server client} {	global ns opt http webm	set webopt "-srcType $opt(tcp) -snkType $opt(sink) -phttp $opt(phttp) -maxConn $opt(maxConn)"	set http($i) [eval new Http $ns $client $server $webopt]	$ns at [expr 0 + $i/1000.0] "$http($i) start"}proc new_cbr {i src dst} {	global ns opt cbr	set cbr($i) [$ns create-connection CBR $src Null $dst 0]	$ns at [expr 0.0001 + $i/1000.0] "$cbr($i) start"}proc new_ftp {i src dst} {	global ns opt ftp	set tcp [$ns create-connection $opt(tcp) $src $opt(sink) $dst 0]	set ftp($i) [$tcp attach-source FTP]	$ns at [expr 0.0002 + $i/1000.0] "$ftp($i) start"}proc new_telnet {i src dst} {	global ns opt telnet	set tcp [$ns create-connection $opt(tcp) $src $opt(sink) $dst 0]	set telnet($i) [$tcp attach-source Telnet]	$ns at [expr 0.0003 + $i/1000.0] "$telnet($i) start"}## MAIN ##getopt $argc $argvif {$opt(seed) >= 0} { ns-random $opt(seed) }if [info exists opt(qsize)] { Queue set limit_ $opt(qsize) }set ns [new Simulator]set trfd [create-trace]create-topology$lan trace $ns $trfdcreate-source$ns at $opt(stop) "finish"$ns run

⌨️ 快捷键说明

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