我知道可以通过使用"cat /proc/sys/net/unix/max_dgram_qlen"命令来找到数据报队列长度的最大值。
我想知道如何找到在启动时设置的默认值(例如发送缓冲区大小的/proc/sys/net/core/wmem_default)。
是否可以增加max_dgram_qlen的值?其上限是多少?
我的内核版本是2.6.27.7。我对Unix域套接字编程(AF_UNIX)很陌生。
非常感谢任何意见/解决方案!
我知道可以通过使用"cat /proc/sys/net/unix/max_dgram_qlen"命令来找到数据报队列长度的最大值。
我想知道如何找到在启动时设置的默认值(例如发送缓冲区大小的/proc/sys/net/core/wmem_default)。
是否可以增加max_dgram_qlen的值?其上限是多少?
我的内核版本是2.6.27.7。我对Unix域套接字编程(AF_UNIX)很陌生。
非常感谢任何意见/解决方案!
max_dgram_qlen
:sysctl net.unix.max_dgram_qlen=128
您可能需要使用sudo
运行,并且根据您的shell,您还可能需要在max_dgram_qlen=128
周围加上双引号。
此外,请参见单个数据包在域套接字上传输的实际限制是多少?。
man unix(7):
SO_SNDBUF套接字选项对UNIX域套接字确实有影响,但SO_RCVBUF选项则没有。对于数据报套接字,SO_SNDBUF值将强加一个上限,用于传出数据报的大小。此限制是由选项值加倍(请参阅socket(7))减去用于开销的32个字节计算得出的。
getsockopt()
函数编程地查找套接字缓冲区大小。 - Maxim Egorushkin