__________________________ |large_integer Accepted packet |
|_________________________| uchar * | large_integer Accepted bits | (参数3) |_________________________|
用两个64位的计数器分别记录最近一次间隔数据包数量和比特数量。
本例子中,网卡打开时设置超时为1000毫秒,也就是说dispatcher_handler()每隔1秒就被调用一次。过滤器也
设置为只监视TCP包,然后pcap_setmode() and pcap_loop()被调用,注意一个指向timeval的指针 作为参数传
送到pcap_loop()。这个timeval结构将用来存储个时间戳以计算两次采样的时间间隔。 dispatcher_handler()用该间隔来获取每秒的比特数和数据包数,并把着两个数显示在显示器上。
最后指出的是目前这个例子是比任何一个利用传统方法在用户层统计的包捕获程序都高效。因为统计模式需要
最小数量的数据拷贝和上下环境交换,同时还有最小的内存需求,所以CPU是最优的。