2014-01-30 101 views
3

我知道數據報隊列長度的最大長度可以使用 「cat/proc/sys/net/unix/max_dgram_qlen」找到。Unix域套接字(AF_UNIX)中的數據報隊列長度的默認大小是什麼?它是可配置的嗎?

我想知道如何找到啓動時設置的默認值(例如發送緩衝區大小爲/ proc/sys/net/core/wmem_default)。

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

我的內核版本是2.6.27.7。我是Unix Domain Socket編程新手(AF_UNIX)。

在此先感謝您的任何意見/解決方案!

回答

0

男人UNIX(7):

的SO_SNDBUF套接字選項確實有UNIX域套接字的效果,但SO_RCVBUF選項沒有。對於數據報套接字,SO_SNDBUF值對傳出數據報的大小施加上限。該限制計算爲用於開銷的doubled(請參閱套接字(7))選項值少於32個字節。

+0

感謝Maxim的回覆。我同意SO_SNDBUF規定了傳出數據報大小的上限。但是,我想知道首先將所有傳出數據報排隊的隊列的默認值。 – user3184348

+1

@ user3184348這是在你的問題中,/ proc/sys/net/core/wmem_default – nos

+0

@ user3184348你可以用'getsockopt()'編程方式找到套接字緩衝區大小。 –

4

以前的答案/評論不明白的是,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?

相關問題