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

📄 raw2gp

📁 柯老师网站上找到的
💻
字号:
eval 'exec perl -I ./bin -S $0 ${1+"$@"}'		#-*-Perl-*-	if 0;require 5.001;($progname) = ($0 =~ m!([^/]+)$!);sub usage {    die <<END;usage: $progname [options] [trace files...]options:    -a		plot acks    -s SCALE    scale TCP sequence numbers by SCALE    -m MODULUS  treat TCP sequence numbers as mod MODULUS    -g		use gnuplot    -q		show queueing delay by connecting lines (only for xgraph)#    -l		show packet lengthTraditional ``wrapping'' ns plots (as called from the test scripts)can be generated with -s 0.01 -m 90.END};# Default options args$opt_a = 0;			# plot ACKS$opt_m = 2 ** 31;		# modulus factor$opt_s = 1;			# scale factorrequire 'getopts.pl';&Getopts('ags:m:ql') || usage;($modulus, $scale, $plot_acks) = ($opt_m, $opt_s, $opt_a); # use meaningful				# mnemonics for options.# calculate offsets.  Do we need this?# $offset = int($modulus / 10 + 1) * 10;# $offset = 1;# XXXXXX# XXX This is going to break because we have to set @INC correctly# XXX We need a clean way to set this for all scripts.# XXXXXXrequire 'dynamics.pl';if (defined($opt_g)) {    require 'gnuplot.pl';    if (defined($opt_q)) {        warn 'ouch';        undef $opt_q;    }} else {    require 'xgraph.pl';}$maxY = 0;@p = @a = @d = ();		# @p:  list of "$x $y" pairs for data packets				# @a:  list of "$x $y" pairs for acks				# @d:  .. drops%q_time_seg = ();$file = $acks = '';sub translate_point {    my($time, $seq, $flow) = @_;    return ($time, $flow + ($seq % $modulus) * $scale);}($minY, $maxY) = (9999999, -9999999);while (<>) {    $dfile = $ARGV;    next if /rtProto/;    @F = split;    /testName/ && do {	$file = $F[2];	$file =~ s/_/-/g;	next;    };    /^[\+-] / && do {	$maxY = $F[7] if ($maxY < $F[7]);	$is_ack = ($F[4] eq 'ack');	next if ($is_ack && !$plot_acks);	($x, $y) = translate_point(@F[1, 10, 7]);	if (defined($opt_q)) {	# XXX intense xgraph-ism here	    if (/^\+/) {		$statement = undef;		$q_time_seg{$is_ack,$y} = $x;	    };	    $statement = "move $q_time_seg{$is_ack,$y} $y\ndraw $x $y\n"		if (/^\-/);	} else {	    $statement = "$x $y\n";	};	if (defined($statement)) {	    if ($is_ack) { 		push(@a, $statement);	    } else {	        push(@p, $statement);	    };	};	$minY = $y if ($minY > $y);	$maxY = $y if ($maxY < $y);	next;    };    /^d / && do {	($x, $y) = translate_point(@F[1, 10, 7]);	push(@d, "$x $y\n");	$minY = $y if ($minY > $y);	$maxY = $y if ($maxY < $y);	next;    };    /^v / && (parseDynamics(@F), next);}	if ($file eq '') {	($file) = ($dfile =~ m!([^/]+)$!);}plotPreamble(STDOUT, $file, 'time', ($#p < $[ ? '0:2' : ''), 'packets', '');plot(STDOUT, 0, 'packets', 'w points 1 5', @p);if ($opt_g) {    plot(STDOUT, 0, 'acks',    'w dots', @a);} else {    # for xgraphs, insert dummy data sets so we get X's for marks in data-set 4    plot(STDOUT, 0, 'acks',	'plot 2', "0 1\n", @a);}plot(STDOUT, 0, 'drops',   'w points 1 4', @d);plotDynamics(STDOUT, $minY, $maxY);plotPostamble(STDOUT);exit;

⌨️ 快捷键说明

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