首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用libpcap测量上传/下载速率

使用libpcap测量上传/下载速率
EN

Stack Overflow用户
提问于 2011-01-15 00:04:09
回答 3查看 1.2K关注 0票数 1

我在一个C应用程序中使用libpcap (在Windows上使用winpcap )来监控网络流量。我需要区分每个网络适配器上的上传和下载流量,以生成连接速度统计数据,但库使用的过滤器表达式似乎不太容易支持这一点(即没有“传入”/“传出”运算符)。

我考虑过的一种方法是查询每个适配器的IP地址,然后使用src host 1.2.3.4 (用于测量上载)和dst host 1.2.3.4 (用于测量下载)之类的过滤器。

我的问题是:

有没有比上面的更好/更简单的方法(可以让我对每个适配器使用相同的过滤器表达式的方法就更好了)?

如果采用上述方法,那么单个适配器是否有可能具有多个与其关联的IP地址?我这样问的原因是,保存单个适配器(在struct pcap_if中)的地址细节的pcap_addr结构有一个'next‘成员,这表明这是可能的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-15 00:35:51

首先,请记住,pcap只能看到数据包。它看不到“传出”或“传入”--仅仅是数据包。因此,是的,您必须在ip报头中使用src/dst进行过滤。没有其他方法可以判断数据包是传入的还是传出的。

其次,是的,没有什么可以阻止具有多个IP地址的适配器。因此,您需要从该适配器获取配置的IP地址。pcap_findalldevs() (WinPCap文档)在这里应该会对您有所帮助,您应该能够从中推断出您想要监视哪些设备。

票数 2
EN

Stack Overflow用户

发布于 2011-01-15 00:11:39

你有没有考虑过看一下pmacct --我个人在过去的一段时间里为此做出了贡献。这是一个C工具,它使用libpcap被动地监视网络流量以进行记帐。

票数 1
EN

Stack Overflow用户

发布于 2011-01-15 00:09:48

试试tcpdump

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4693034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档