1

我正在使用 Linux 2.6.38 (fc14)。获取套接字文件描述符(例如 TCP 套接字)上可用空间量的 ioctl 标志是什么?我发现 NetBSD 有 FIONREAD、FIONWRITE 和 FIONSPACE 用于此类相关目的。但是,我只能在 Linux 中使用 FIONREAD。

4

2 回答 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 回答