【发布时间】:2011-05-15 22:56:56
【问题描述】:
我正在开发一个监控网络使用情况的应用程序。但是我注意到很多方法都不允许排除本地流量(比如 Time Machine)。
我正在寻找一种方法来排除本地流量,并且只监控直接进出互联网的使用情况。
更新:感谢您的回复,现在我知道如何查找流量是否是本地流量,但我仍然不知道如何计算总输入/输出字节数(对不起,如果我之前没有详细说明)。我无法知道在特定时间段内或自操作系统启动以来本地(或互联网)发送/接收了多少字节。当操作系统运行时,进程被启动或终止,这个问题变得更加复杂。
How to get network adapter stats in linux/Mac OSX? 问题的答案提供了一种总结总使用量的有趣方式,但它无济于事,因为它总结的使用量是接口统计信息。
更新 2:我已经发布了我的最终解决方案。请向下滚动查看。
【问题讨论】:
-
查看 lo 以外的接口上的流量。或者默认路由指向的那个。不确定如何使用特定于 Mac OS X 的调用来执行此操作(或者我会将其作为答案发布),但 Unix 工具可以做到...
-
排除每个本地接口的子网应该做一个合理的工作。
getifaddrs(3)应该没问题;您可能想要的唯一特定于 Mac 的东西是观察界面是否启动/关闭。 -
@derobert 谢谢,但其他接口不应该也有本地流量吗?
-
我已经回答了你在一个答案中的评论而不是另一个评论,因为我的答案方式太长了,无法发表评论。
标签: objective-c cocoa networking monitoring sysctl