我处于极限带宽限制的情况下,必须将大部分带宽用于传输一种类型的测量数据。有时我会发送大量的测量数据,有时我会等待事件发生(所有这些都是通过TCP套接字)。
我希望能够以与我发回的测量量成反比的速度在后台流出完整的数据捕获文件(不同于测量值)。
我正在寻找一种方法来监视从网络接口发送的字节数与Ubuntu上的系统监视器大致相同。系统监视器的源代码依赖于gnome库,因为我的程序是在嵌入式设备上,所以我想减少我使用的外部库的数量。有没有人知道在C / C ++中使用标准Linux发行版上没有多少额外库的方法呢?
答案 0 :(得分:3)
最简单的方法之一是解析文件:/ 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 ++库的解析器。
答案 1 :(得分:1)
使用RTNetLink接口套接字的NetLink套接字,它们将为您提供struct net_device_stats格式所需的
答案 2 :(得分:1)
通过传输和接收的字节数
/sys/class/net/eth0/statistics/tx_bytes
和/sys/class/net/eth0/statistics/rx_bytes
个文件。
$ cat /sys/class/net/net1/statistics/rx_bytes
1055448