gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:42:21 25 4
gpt4 key购买 nike

我在Linux下做一个简单的网络应用,我需要读取下面两个属性:

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

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

有什么想法或建议吗?

最佳答案

获取方式如下,

  1. Receive Buffer 中尚未读取的数据长度:

    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

关于Linux Sockets,如何获取发送缓冲区中的字节数/数据包数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com