[英]Java IOException: No buffer space available while sending UDP packets on Linux
[英]Linux Sockets, how to get number of bytes/packets in sending buffer?
我正在Linux下的一个简单网络应用程序上工作,在这里我需要阅读以下两个属性:
可以使用ioctl()函数的FIONREAD选项获得接收缓冲区(第一个属性)。 但是对于第二个属性(发送缓冲区中的字节数),我不确定如何读取。 我已经尝试过getsockopt()函数中的SO_SNDBUF选项,但是它实际上是发送缓冲区的最大大小,而不是发送缓冲区中当前的数据大小。
有什么想法或建议吗?
这是获取方法,
接收缓冲区中尚未读取的数据长度:
ioctl( socket_descriptor, FIONREAD, &size ); // alternative 1 ioctl( socket_descriptor, SIOCINQ, &size ); // alternative 2
发送缓冲区中尚未耗尽的数据长度(尚未发送或已被接收者确认但尚未发送):
ioctl( socket_descriptor, TIOCOUTQ, &size ); // alternative 1 ioctl( socket_descriptor, SIOCOUTQ, &size ); // alternative 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.