我有一个 C 应用程序,它通过 TCP 套接字接收大量数据。是否可以以某种方式获取该文件描述符/套接字的内核缓冲区大小?我想知道我拥有的文件描述符的内核中还有多少数据。
多谢
答案1
您可以使用这SIOCINQ
/FIONREAD
ioctl
:
int bytes_left;
ioctl(sock, FIONREAD, &bytes_left);
这“返回接收缓冲区中排队的未读数据量。”SIOCINQ
定义于linux/sockios.h
(在 Linux 上),FIONREAD
在sys/ioctl.h
.
要检索套接字的缓冲区容量,请使用getsockopt
和SO_RCVBUF
。