c++ - C/C++ 中的 Linux 网络接口(interface)使用情况监控

标签 c++ networking monitoring

我的带宽非常有限,必须将大部分带宽用于传输一种类型的测量数据。有时我会发送大量此类测量数据,而其他时候我只是等待事件发生(所有这些都通过 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/

相关文章:

mysql - MariaDB:性能监控

linux - 监视在我的 linux 机器上运行的所有进程的 STDERR

c++ - 使用 win32 C++ 和 Hook 从应用程序中的按钮获取文本

c++ - 用 C++ 将 Unicode 写入文件

iphone - 模型中的 ios 网络代码?

c# - "Either the application has not called WSAStartup, or WSAStartup failed"是什么意思?

linux - Firebird DB-监控表

c++ - 如何使用 select 语句检索 sqlite 并分配给 vector 然后分配给字符串

c++ - 你怎么知道客户端何时连接到服务器?

javascript - Node JS 查找连接到本地网络的所有设备