Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Linux/Unix中的套接字级统计_C_Linux_Sockets_Network Programming - Fatal编程技术网

C Linux/Unix中的套接字级统计

C Linux/Unix中的套接字级统计,c,linux,sockets,network-programming,C,Linux,Sockets,Network Programming,有没有一种方法可以通过编程方式知道Linux/Unix中套接字发送或接收的原始字节总数?请尝试以下操作: int l = 0; ioctl(sock, FIONREAD, &l); if (l > 0) { l = read(sock, buffer, l); } 请尝试以下操作: int l = 0; ioctl(sock, FIONREAD, &l); if (l > 0) { l = read(sock, buffer, l); } 套接字编程中的R

有没有一种方法可以通过编程方式知道Linux/Unix中套接字发送或接收的原始字节总数?

请尝试以下操作:

int l = 0;
ioctl(sock, FIONREAD, &l);
if (l > 0)
{
  l = read(sock, buffer, l);
}
请尝试以下操作:

int l = 0;
ioctl(sock, FIONREAD, &l);
if (l > 0)
{
  l = read(sock, buffer, l);
}

套接字编程中的Read()和write()函数分别返回接收和发送的字节数。只取这些值的总和。@shivammitra,这些不是有效负载字节数吗?我怀疑它不在其中,因为不可能总是将一个字节与单个套接字相关联。如果您通过VPN连接,两个不同连接的数据包被封装在一个VPN数据包中,并且VPN数据包有一些开销,该怎么办?据我所知,没有。在Linux中,统计数据是按每个设备(请参见
/proc/net/dev
)和每个进程(请参见
/proc/PID/net/dev
)维护的,它们包括有效负载中的字节数和数据包数等等。(位于
/sys/class/net/*/statistics/*
的特定于设备的统计数据是相同的值,每个伪文件只有一个字段。)在许多情况下(加速网卡),内核可能永远不会知道在线路上发送/接收的实际字节数/符号数,因此,即使尝试对其进行说明也会很混乱/徒劳无益。请看,在Linux/BSD上,您需要知道如何从套接字收集统计信息。套接字编程中的Read()和write()函数分别返回接收和发送的字节数。只取这些值的总和。@shivammitra,这些不是有效负载字节数吗?我怀疑它不在其中,因为不可能总是将一个字节与单个套接字相关联。如果您通过VPN连接,两个不同连接的数据包被封装在一个VPN数据包中,并且VPN数据包有一些开销,该怎么办?据我所知,没有。在Linux中,统计数据是按每个设备(请参见
/proc/net/dev
)和每个进程(请参见
/proc/PID/net/dev
)维护的,它们包括有效负载中的字节数和数据包数等等。(位于
/sys/class/net/*/statistics/*
的特定于设备的统计数据是相同的值,每个伪文件只有一个字段。)在许多情况下(加速网卡),内核可能永远不会知道在线路上发送/接收的实际字节数/符号数,因此,即使尝试对其进行说明也会很混乱/徒劳。请看,您需要知道如何从Linux/BSD上的套接字收集统计信息。是否
l
仅包含应用程序字节的原始字节数?是,FIONREAD ioctl返回队列中所有数据消息的数据字节数是否仅包含应用程序字节的原始字节数?是,FIONREAD ioctl返回队列中所有数据消息的数据字节数