2009-08-26 83 views
3

我在我的极其有限的带宽和必须投入大部分带宽,以将一个类型的测量数据的情况。有时候我会发送大量的这些测量数据,而其他时间我只是在等待事件发生(所有这些都是通过TCP套接字)。用C Linux的网络接口使用监控/ C++

我希望能够以与我发回的测量量成反比的速度在后台流出完整的数据采集文件(与测量值不同)。

我正在寻找一种方法来监视多少字节被发送出去的网络接口,在大致相同的是因为在Ubuntu系统监控。该系统监控在源代码依赖于侏儒库和由于我的程序是嵌入式设备上,我想减少,我使用外部库的数量。有没有人知道在C/C++中如何在标准的Linux发行版上没有额外的库?

回答

3

其中一个最简单的方法是解析该文件:的/ proc /净/ 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

RTNETLINK接口插座使用netlink的插座,他们会得到你所需要的结构net_device_stats格式

+0

你有什么好的例子吗?我可以在网上找到的所有教程都不太有用...... – 2011-05-13 01:50:51

1

传输的字节数,并通过 /sys/class/net/eth0/statistics/tx_bytes/sys/class/net/eth0/statistics/rx_bytes文件收到accessable。

$ cat /sys/class/net/net1/statistics/rx_bytes 
1055448