什么是NetBSD的FIONSPACE ioctl在Linux中的等价物?

时间:2011-08-08 22:54:04

标签: linux sockets ioctl netbsd

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

2 个答案:

答案 0 :(得分:8)

SIOCOUTQ是等效于FIONWRITE的Linux。我不相信有一个直接的FIONSPACE等价物:相反,你可以从套接字发送缓冲区大小中减去SIOCOUTQ返回的值,这可以通过getsockopt(s, SOL_SOCKET, SO_SNDBUF, ...)获得。

答案 1 :(得分:0)

有关@HKK 所说的信息,可在 man socket(7) 中找到:

<块引用>

SO_SNDBUF

设置或获取最大套接字发送缓冲区(以字节为单位)。这 内核将此值加倍(以允许簿记开销的空间) 当它使用 setsockopt(2) 设置时,这个加倍的值是 由getsockopt(2) 返回。默认值由 /proc/sys/net/core/wmem_default 文件,最大允许值为 由 /proc/sys/net/core/wmem_max 文件设置。最低(加倍) 此选项的值为 2048。