#!/usr/bin/perl use strict; use IO::Socket; use Time::HiRes 'time'; die "Usage: $0 host[:port] (port defaults to 19)\n" unless defined $ARGV[0]; my $addr = $ARGV[0]; $addr .= ":19" unless $addr =~ /\:/; my $socket = new IO::Socket::INET(PeerAddr => $addr, Proto => 'tcp') or die "Could not connect to $addr: $!"; print "Connected to $addr\n"; my $count = 0; my $start = time; my $input; my $reads = 0; while (defined ($input = <$socket>)) { $reads = ($reads + 1) % 100; #speed up: check only every 100 reads if ($reads == 0 and time - $start >= 1) { #1 sec my $duration = time - $start; my $speed_kbits = sprintf("%.2f", $count * 8 / 1_024 / $duration); #kbit/s my $speed_mbits = sprintf("%.2f", $count * 8 / 1_048_576 / $duration); #kbit/s print "Speed: $speed_kbits kbit/s - $speed_mbits mbit/s\n"; $count = 0; $start = time; } else { $count += length $input; } } close($socket);