flow.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #!/usr/bin/perl -w
  2. #
  3. # Copyright (C) 2001 by USC/ISI
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms are permitted
  7. # provided that the above copyright notice and this paragraph are
  8. # duplicated in all such forms and that any documentation, advertising
  9. # materials, and other materials related to such distribution and use
  10. # acknowledge that the software was developed by the University of
  11. # Southern California, Information Sciences Institute.  The name of the
  12. # University may not be used to endorse or promote products derived from
  13. # this software without specific prior written permission.
  14. #
  15. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  16. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  17. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18. #
  19. # An perl script that computes flow statistics such as size, duration and
  20. # arrival time, used by SAMAN ModelGen
  21. #
  22. # This work is supported by DARPA through SAMAN Project
  23. # (http://www.isi.edu/saman/), administered by the Space and Naval
  24. # Warfare System Center San Diego under Contract No. N66001-00-C-8066
  25. #
  26. sub usage {
  27.         print STDERR <<END;
  28. usage: $0 [-w FilenameExtention]
  29. Options:
  30.     -w string  specify the filename extention
  31. END
  32.         exit 1;
  33. }
  34. BEGIN {
  35.      $dblibdir = "./";
  36.         push(@INC, $dblibdir);
  37. }
  38. use DbGetopt;
  39. require "dblib.pl";
  40. my(@orig_argv) = @ARGV;
  41. &usage if ($#ARGV < 0);
  42. my($prog) = &progname;
  43. my($dbopts) = new DbGetopt("w:?", @ARGV);
  44. my($ch);
  45. while ($dbopts->getopt) {
  46.      $ch = $dbopts->opt;
  47.         if ($ch eq 'w') {
  48.         $fext = $dbopts->optarg;
  49.      } else {
  50.              &usage;
  51.         };
  52. };
  53. $fsize=join(".",$fext,"size");
  54. $fdur=join(".",$fext,"dur");
  55. $fstart=join(".",$fext,"start");
  56. $flog=join(".",$fext,"log");
  57. open(FSIZE,"> $fsize") || die("cannot open $fsizen");
  58. open(FDUR,"> $fdur") || die("cannot open $fdurn");
  59. open(FSTART,"> $fstart") || die("cannot open $fstartn");
  60. open(FLOG,"> $flog") || die("cannot open $flogn");
  61. $oldsrc="";
  62. $olddst="";
  63. $oldsize=0;
  64. $totalsize=0;
  65. $totaldur=0;
  66. $oldstart=0;
  67. $flowstart=0;
  68. while (<>) {
  69.         ($src,$dst,$start,$size) = split(/[n ]/,$_);
  70. if (($oldsrc ne $src) || ($olddst ne $dst)) {
  71. if (($oldsrc ne "") && ($olddst ne "") && ($cnt gt 1)) {
  72. print FSIZE "$oldsrc $olddst $totalsizen";
  73. # print FSIZE "$totalsizen";
  74. $totaldur=$oldstart - $flowstart;
  75. print FDUR "$oldsrc $olddst $totaldurn";
  76. # print FDUR "$totaldurn";
  77. $totalsize=$size;
  78. }
  79. $cnt=1;
  80. # print FSTART "$start $src $dst n";
  81. print FSTART "$startn";
  82. $flowstart=$start;
  83. } else {
  84.         $gap=$start - $oldstart;
  85. if ($gap ge 60) {
  86. print FLOG "$oldsrc $olddst $oldstartn";
  87. print FLOG "$src $dst $start $gapn";
  88. }
  89. $totalsize=$totalsize+$size;
  90. $cnt=$cnt+1;
  91. }
  92. $oldsrc=$src;
  93. $olddst=$dst;
  94. $oldstart=$start;
  95. }
  96. close(FSIZE);
  97. close(FDUR);
  98. close(FSTART);