套接字接收队列中有多少数据包或字节?

sel*_*bie 5 sockets linux udp

调用getsockoptwithSO_RCVBUF将返回套接字接收缓冲区的分配大小。

我很好奇,想知道是否有可能查询多少数据报数据包(或字节)实际上是在调用缓存之前,recv还是recvfrom?如果有帮助,我可以满足于 Linux 特定的答案。有问题的套接字是 UDP,但我怀疑它对 TCP 无关紧要。

我问的原因只是为了测试和调试目的。我正在尝试验证我对 setocktop(SO_RCVBUF) 的调用是否设置了足够的大小。知道接收缓冲区是否接近达到其限制将验证是否设置了足够的大小。

Rem*_*eau 3

ioctlsocket(FIONREAD)在 Windows 上,您可以通过和获得所需的内容WSAIoCtl(FIONREAD),它们都返回完整缓冲数据的完整大小,即使缓冲了多个数据报消息也是如此。然而,Linux 上没有类似的东西。有ioctl(FIONREAD),它只返回下一个缓冲消息的大小。