繁体   English   中英

Linux套接字,如何获取发送缓冲区中的字节数/数据包数?

[英]Linux Sockets, how to get number of bytes/packets in sending buffer?

我正在Linux下的一个简单网络应用程序上工作,在这里我需要阅读以下两个属性:

  1. 准备读取的接收缓冲区中的字节数。
  2. 套接字发送缓冲区中尚未发送的字节数。

可以使用ioctl()函数的FIONREAD选项获得接收缓冲区(第一个属性)。 但是对于第二个属性(发送缓冲区中的字节数),我不确定如何读取。 我已经尝试过getsockopt()函数中的SO_SNDBUF选项,但是它实际上是发送缓冲区的最大大小,而不是发送缓冲区中当前的数据大小。

有什么想法或建议吗?

这是获取方法,

  1. 接收缓冲区中尚未读取的数据长度:

     ioctl( socket_descriptor, FIONREAD, &size ); // alternative 1 ioctl( socket_descriptor, SIOCINQ, &size ); // alternative 2 
  2. 发送缓冲区中尚未耗尽的数据长度(尚未发送或已被接收者确认但尚未发送):

     ioctl( socket_descriptor, TIOCOUTQ, &size ); // alternative 1 ioctl( socket_descriptor, SIOCOUTQ, &size ); // alternative 2 

参考: http : //linux.die.net/man/7/tcp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM