我处于带宽非常有限的情况下,必须将大部分带宽用于传输一种类型的测量数据。有时,我会发送大量这样的测量数据,而有时,我只是等待事件发生(所有这些都是通过TCP套接字实现的)。
我希望能够在后台以与我发回的测量值成反比的速度流出完整的数据捕获文件(与测量值不同)。
我正在寻找一种方法来监控多少字节正在发送出去的网络接口,在很大程度上是相同的系统监视器在Ubuntu上。系统监视器的源代码依赖于gnome库,由于我的程序是在嵌入式设备上运行的,因此我想减少使用的外部库的数量。有没有人知道用C/C++实现这一点的方法,而不需要在标准Linux发行版上使用很多额外的库?
发布于 2009-08-26 05:22:16
最简单的方法之一是解析文件: /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++库。
发布于 2016-05-07 23:36:06
可通过/sys/class/net/eth0/statistics/tx_bytes和/sys/class/net/eth0/statistics/rx_bytes文件访问的传输和接收字节数。
$ cat /sys/class/net/net1/statistics/rx_bytes
1055448发布于 2009-08-26 06:23:58
使用RTNetLink接口套接字的NetLink套接字,它们会得到你所需要的结构net_device_stats格式
https://stackoverflow.com/questions/1332031
复制相似问题