C
Cognition Peon
Greetings,
I have been trying to write a program to graph live traffic on a network
interface. Tk::Graph has been very helpful to create live graphs.
The important problem, which I am not able to get through or find any good
help is counting all incoming packets at a specified regular interval.
I have used Net:cap and Time::HiRes to write the following program to
count interface traffic in 0.5 sec intervals of time.
#!/usr/bin/perl -w
use strict;
use English;
use Net:cap;
use Time::HiRes qw (setitimer time ITIMER_REAL);
my($dev, $pcap_t, $err);
$dev = Net:cap::lookupdev(\$err);
$pcap_t = Net:cap:pen_live($dev, 1500, 1, 0, \$err);
my $count = 0;
sub process_pkt {
my ( $user_data, $hdr, $pkt ) = @_;
$count++;
$SIG{ALRM} = sub { print time, " $count\n"; $count = 0 };
setitimer(ITIMER_REAL, 0.5, 0.5);
}
Net:cap::loop( $pcap_t, 0, \&process_pkt, "argument");
Net:cap::close($pcap_t);
Perl 5.8 installed on my linux is not configured with threads enabled. The
output, as shown below, is generated at irregular intervals of time.
1069646988.25076 3
1069647025.00529 2
1069647031.59172 121
1069647033.06818 7
1069647037.78875 66
Any help or pointers towards a good solution will be greatly appreciated.
Thanks,
Prakash.
--
echo (e-mail address removed) | perl -pe 'y/A-Za-z/N-ZA-Mn-za-m/'
Sometimes I think the surest sign that intelligent life
exists elsewhere in the universe is that none of it has
tried to contact us. -- Bill Watterson "Calvin and Hobbes"
I have been trying to write a program to graph live traffic on a network
interface. Tk::Graph has been very helpful to create live graphs.
The important problem, which I am not able to get through or find any good
help is counting all incoming packets at a specified regular interval.
I have used Net:cap and Time::HiRes to write the following program to
count interface traffic in 0.5 sec intervals of time.
#!/usr/bin/perl -w
use strict;
use English;
use Net:cap;
use Time::HiRes qw (setitimer time ITIMER_REAL);
my($dev, $pcap_t, $err);
$dev = Net:cap::lookupdev(\$err);
$pcap_t = Net:cap:pen_live($dev, 1500, 1, 0, \$err);
my $count = 0;
sub process_pkt {
my ( $user_data, $hdr, $pkt ) = @_;
$count++;
$SIG{ALRM} = sub { print time, " $count\n"; $count = 0 };
setitimer(ITIMER_REAL, 0.5, 0.5);
}
Net:cap::loop( $pcap_t, 0, \&process_pkt, "argument");
Net:cap::close($pcap_t);
Perl 5.8 installed on my linux is not configured with threads enabled. The
output, as shown below, is generated at irregular intervals of time.
1069646988.25076 3
1069647025.00529 2
1069647031.59172 121
1069647033.06818 7
1069647037.78875 66
Any help or pointers towards a good solution will be greatly appreciated.
Thanks,
Prakash.
--
echo (e-mail address removed) | perl -pe 'y/A-Za-z/N-ZA-Mn-za-m/'
Sometimes I think the surest sign that intelligent life
exists elsewhere in the universe is that none of it has
tried to contact us. -- Bill Watterson "Calvin and Hobbes"