我的带宽非常有限,必须将大部分带宽用于传输一种类型的测量数据。有时我会发送大量此类测量数据,而其他时候我只是等待事件发生(所有这些都通过 TCP 套接字进行)。
我希望能够以与我发回的测量值成反比的速度在后台流出完整的数据捕获文件(不同于测量值)。
我正在寻找一种方法来监控有多少字节从网络接口(interface)发送出去,就像 Ubuntu 上的系统监控器一样。系统监视器的源代码依赖于 gnome 库,因为我的程序是在嵌入式设备上,所以我想减少我使用的外部库的数量。有没有人知道在标准 Linux 发行版上没有许多额外库的情况下在 C/C++ 中执行此操作的方法?
最佳答案
最简单的方法之一是解析文件:/proc/net/dev
我的包含:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 44865 1431 0 0 0 0 0 0 44865 1431 0 0 0 0 0 0
eth0:150117850 313734 0 0 0 0 0 0 34347178 271210 0 0 0 0 0 0
pan0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
然后您可以编写一个只使用 C/C++ 库的解析器。
关于c++ - C/C++ 中的 Linux 网络接口(interface)使用情况监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1332031/