Your example on my system also produced similar results. But, using "alarm" function in my packet count program as shown below, had similar random results.
#!/usr/bin/perl -w use strict; use English; use Net::Pcap; use Time::HiRes qw (alarm time ); my($dev, $pcap_t, $err); $dev = Net::Pcap::lookupdev(\$err); $pcap_t = Net::Pcap::open_live($dev, 1500, 1, 0, \$err); my $count = 0; sub process_pkt { my ( $user_data, $hdr, $pkt ) = @_; $count++; $SIG{ALRM} = sub { printf ("%16.5f %d\n", time, $count); $count = +0 }; # setitimer(ITIMER_REAL, 0.5, 0.5); alarm(0.5); } Net::Pcap::loop( $pcap_t, 0, \&process_pkt, "argument"); Net::Pcap::close($pcap_t);
1069653942.70856 6
1069653948.50819 69
1069653949.46479 2
1069653952.55703 4
1069654021.47634 6
1069654026.47576 4
1069654147.79127 2
1069654173.53735 6
1069654174.43908 2
probably, both packet capturing and alarming are too much for perl, to do it precisely the way we want.
Can you please elaborate on "printing packets/second". Net::Pcap doesn't seem to have any function that would capture packets in regular intervals of time. Any help about how I can get "no of packets/second" will be very helpful.
Thanks,
prakash.
In reply to Re: Re: IP Packet count at regular intervals of time
by prakashrj
in thread IP Packet count at regular intervals of time
by prakashrj
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |