我正在使用 Linux 2.6.38 (fc14)。获取套接字文件描述符(例如 TCP 套接字)上可用空间量的 ioctl 标志是什么?我发现 NetBSD 有 FIONREAD、FIONWRITE 和 FIONSPACE 用于此类相关目的。但是,我只能在 Linux 中使用 FIONREAD。
问问题
2748 次
2 回答
8
SIOCOUTQ
是 Linux 的等价物FIONWRITE
。我不相信有直接的FIONSPACE
等价物:相反,您可以SIOCOUTQ
从套接字发送缓冲区大小中减去返回的值,这可以通过getsockopt(s, SOL_SOCKET, SO_SNDBUF, ...)
.
于 2011-08-09T14:22:52.810 回答
0
有关@HKK 所说的信息,请参见 man socket(7):
SO_SNDBUF
设置或获取最大套接字发送缓冲区(以字节为单位)。当使用 setsockopt(2) 设置该值时,内核将该值加倍(以便为簿记开销留出空间),并且该加倍值 由 getsockopt(2) 返回。默认值由 /proc/sys/net/core/wmem_default 文件设置,最大允许值由 /proc/sys/net/core/wmem_max 文件设置。此选项的最小(加倍)值为 2048。
于 2021-07-14T09:11:33.707 回答