我正在编写一个 PERL 脚本,该脚本捕获数据包,然后每秒生成有关所有 TCP 流的统计信息,这些流在该秒内在线。我正在使用 NET::Pcap,我想以某种方式实现这一点,如果可以不使用线程。我尝试过使用 select() 和 pcap_breakloop(),但它似乎不起作用。
我在想:
...
$pcap = pcap_open_live($dev, 1024, 1, 0, \$err);
select($pcap, undef, undef, 1)
if 1 sec elapsed print a line with data maintained by the pcap_callback function,
and go back to pcap_loop
你知道如何解决这个问题吗?我不确定我应该使用 select,但我没有更好的主意,我是 PERL 的新手。我选择 select 的原因是,即使没有流量,我也需要生成统计信息。
例如,我想每秒打印传输的字节,然后我还需要生成总零行。
任何帮助,将不胜感激 :)