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

📄 wlan-gnuscript.cc

📁 柯老师网站上找到的
💻 CC
字号:
#include <stdio.h>#include <string.h>#include <assert.h>void usage(const char* prog){	fprintf(stderr, "usage:\n");	fprintf(stderr, "	%s <scenario> <mode = lat | bw | latdist>\n", prog);}int main(int argc, char** argv){	const char* scenario = argv[1];	const char* mode = argv[2];	const char* label;	char scratch[20];	char number[20];	float max = 0.0, num;	int flow, ret, ymax;	int argp = 3, first = 1;	if (argc < 3) {		usage(argv[0]);	}	printf("load \"%s.title\"\n", scenario);	if (strcasecmp(mode, "lat") == 0) {		printf("set xlabel \"time(secs)\"\n");		printf("set ylabel \"latency(ms)\"\n");		printf("plot \\\n");		while (scanf("%d", &flow) != EOF) {			if (argp < argc) {				label = argv[argp++];			} else {				sprintf(scratch, "Flow_%d", flow);				label = scratch;			}			if (strcasecmp(label, "end") == 0)				break;			if (strcasecmp(label, "drop") == 0) {				ret = scanf("%s%s%s", number, number, number);				assert(ret != EOF);				continue;			}			if (!first)				printf(",	\\\n");			first = 0;			ret = scanf("%f", &num);			assert(ret != EOF);			if (num > max)				max = num;			/* read the trailing ms behind the max */			ret = scanf("%s", number);			assert(ret != EOF);			printf("	\"%s.%d.lat\" using 1:($2*1000) title \"%s (", scenario, flow, label);			ret = scanf("%s", number);			assert(ret != EOF);			printf("Mean lat = %8s, ", number);			ret = scanf("%s", number);			assert(ret != EOF);			printf("dev = %8s", number);			printf(")\" with lines");		}	} else if (strcasecmp(mode, "bw") == 0) {		printf("set xlabel \"time(secs)\"\n");		printf("set ylabel \"Bandwidth(Mb/s)\"\n");		printf("plot \\\n");		while (scanf("%d", &flow) != EOF) {			if (argp < argc) {				label = argv[argp++];			} else {				sprintf(scratch, "Flow_%d", flow);				label = scratch;			}			if (strcasecmp(label, "end") == 0)				break;			if (strcasecmp(label, "drop") == 0) {				ret = scanf("%s%s%s%s", number, number, number, number);				assert(ret != EOF);				continue;			}			if (!first)				printf(",	\\\n");			first = 0;			printf("	\"%s.%d.bw\" using 1:($2*8.0/1000000.0) title \"%s (", scenario, flow, label);			ret = scanf("%s", number);			assert(ret != EOF);			printf("IFQ/MAC drops = %s/", number);			ret = scanf("%s", number);			assert(ret != EOF);			printf("%s, ", number);			ret = scanf("%s", number);			assert(ret != EOF);			sscanf(number, "%f", &num);			printf("Total b/w = %.2fMb/s", (double)num*1024.0*8.0/1000000.0);			ret = scanf("%s", number);			assert(ret != EOF);			sscanf(number, "%f", &num);			if (num > max)				max = num;			printf(")\" with lines");		}		max = max*1024.0*8.0/1000000.0;	} else if (strcasecmp(mode, "latdist") == 0) {		max = 100.0;		printf("set xlabel \"Latency(ms)\"\n");		printf("set ylabel \"cummulative %% of pkts\"\n");		printf("plot 100.0 notitle with lines 0,	\\\n");		while (scanf("%d", &flow) != EOF) {			if (argp < argc) {				label = argv[argp++];			} else {				sprintf(scratch, "Flow_%d", flow);				label = scratch;			}			if (strcasecmp(label, "end") == 0)				break;			if (strcasecmp(label, "drop") == 0) {				continue;			}			if (!first)				printf(",	\\\n");			first = 0;			printf("	\"%s.%d.latdist\" using ($1*1000):2 title \"%s\" with lines",				scenario, flow, label);		}	} else {		usage(argv[0]);	}	printf("\n");	for (ret = 0; max < 100.0; ++ret) max *= 10.0;	ymax = (int)(max * 1.3);	ymax = ((ymax + 5) / 10) * 10;	for (max = ymax; ret--; max = max/10.0);	printf("set yrange [0:%.9f]\n", max);	printf("set terminal jpeg\n");	printf("set output \"%s.%s.jpeg\"\n", scenario, mode);	printf("replot\n");	printf("set terminal x11\n");	printf("set output\n");	printf("replot\n");}

⌨️ 快捷键说明

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