tcp-banger.pl
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:1k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. #!/usr/local/bin/perl
  2. # tcp-banger.pl
  3. #
  4. # Duane Wessels, Dec 1995
  5. #
  6. # Usage: tcp-banger.pl [host [port]] < url-list
  7. #
  8. # Sends a continuous stream of HTTP proxy requests to a cache.  Stdin is a
  9. # list of URLs to request.  Run N of these at the same time to simulate a
  10. # heavy client load.
  11. #
  12. # NOTE: does not simulate "real-world" events such as aborted requests
  13. # (connections) and other network problems.
  14. $|=1;
  15. $host=(shift || 'localhost') ;
  16. $port=(shift || '3128') ;
  17. require 'sys/socket.ph';
  18. $sockaddr = 'S n a4 x8';
  19. ($name, $aliases, $proto) = getprotobyname("tcp");
  20. ($fqdn, $aliases, $type, $len, $thataddr) = gethostbyname($host);
  21. $thissock = pack($sockaddr, &AF_INET, 0, "");
  22. $that = pack($sockaddr, &AF_INET, $port, $thataddr);
  23. while (<>) {
  24. chop ($url = $_);
  25. die "socket: $!n" unless
  26.          socket (SOCK, &AF_INET, &SOCK_STREAM, $proto);
  27. die "bind: $!n" unless
  28.          bind (SOCK, $thissock);
  29.         die "$host:$port: $!n" unless
  30. connect (SOCK, $that);
  31.         select (SOCK); $| = 1;
  32.         select (STDOUT);
  33. print SOCK "GET $url HTTP/1.0rnAccept: */*rnrn";
  34. $_ = <SOCK>;
  35. ($ver,$code,$junk) = split;
  36. printf "%s %sn", $code ? $code : 'FAIL', $url;
  37. 1 while (read(SOCK,$_,4096));
  38. close SOCK;
  39. }