【发布时间】:2015-12-06 00:53:09
【问题描述】:
有没有办法以编程方式知道 Linux/Unix 中套接字发送或接收的原始字节总数?
【问题讨论】:
-
socket编程中的Read()和write()函数分别返回接收和发送的字节数。只需将这些值相加即可。
-
@shivammitra,这些不是有效负载字节数吗?
-
我怀疑它不在那里,因为并不总是可以将一个字节与单个套接字相关联。如果您通过 VPN 进行连接,两个不同连接的数据包被封装在一个 VPN 数据包中,而 VPN 数据包有一些开销?
-
据我所知,没有。在 Linux 中,统计信息是按设备(请参阅
/proc/net/dev)和每个进程(请参阅/proc/PID/net/dev)维护的,它们包括有效负载中的字节数和数据包数等。 (/sys/class/net/*/statistics/*上特定于设备的统计数据是相同的值,每个伪文件只有一个字段。)在许多情况下(加速网卡),内核可能永远不会知道在线上发送/接收的实际字节/符号数,所以即使尝试解释它也是混乱/徒劳的。 -
参见stackoverflow.com/questions/3337249/… 在 Linux/BSD 上如何从套接字收集统计信息您需要知道的一切。
标签: c linux sockets network-programming