Unix域套接字(AF_UNIX)中数据报队列长度的默认大小是多少?它是可配置的吗?

时间:2014-01-30 06:00:25

标签: c sockets unix linux-kernel datagram

我知道可以使用找到数据报队列长度的最大长度 “cat / proc / sys / net / unix / max_dgram_qlen”。

我想知道如何找到启动时设置的默认值(例如发送缓冲区大小的/ proc / sys / net / core / wmem_default)。

是否可以增加max_dgram_qlen的值?同样的上限是多少?

我的内核版本是2.6.27.7。我是Unix域套接字编程(AF_UNIX)的新手。

提前感谢任何评论/解决方案!

2 个答案:

答案 0 :(得分:5)

以前的答案/评论未能理解OP是在讨论数据报(max_dram_qlen)中的最大队列长度而不是字节。操作系统提供两种设置的设置。

您可以使用以下命令设置max_dgram_qlen

sysctl net.unix.max_dgram_qlen=128

您可能需要使用sudo运行,并且您可能还需要在max_dgram_qlen=128周围加上双引号,具体取决于您的shell。

另请参阅What's the practical limit on the size of single packet transmitted over domain socket?

答案 1 :(得分:0)

man unix(7):

  

SO_SNDBUF套接字选项对UNIX域套接字有效,但SO_RCVBUF选项不起作用。对于数据报套接字,SO_SNDBUF值对传出数据报的大小施加了上限。此限制计算为doubled(请参阅socket(7))选项值减去用于开销的32个字节。