什么决定了最大本地数据报大小? (PF_UNIX / SOCK_DGRAM)

时间:2010-10-15 15:37:25

标签: c linux sockets posix

基于本地消息的套接字是否可以将消息传输到SO_SNDBUF / SO_RCVBUF限制,或者可以为使用socket(PF_UNIX, SOCK_SEQPACKET, 0)socket(PF_UNIX, SOCK_DGRAM, 0)创建的描述符确定所谓的“固定最大长度”?

2 个答案:

答案 0 :(得分:2)

来自man unix

SO_SNDBUF套接字选项对Unix域sock有效 -        ets,但SO_RCVBUF选项没有。对于数据报套接字,        SO_SNDBUF值对传出数据的大小施加上限 -        克。此限制计算为doubled(请参阅socket(7))选项        值少于32个字节用于开销。

答案 1 :(得分:1)

您的数据报将在套接字发送/接收缓冲区中排队,最多分别为SO_SNDBUF和SO_RCVBUF。数据报将被丢弃超过此限制。

请注意,数据报没有您放入其中的数据的确切大小。

我真的不记得了,但我认为你可以调整这些设置。但是,在处理UDP套接字时,自己的缓冲总是更明智。

编辑:对不起,对不对。这可能有用:

  

SO_SNDBUF套接字选项确实有   对Unix域袜子的影响 -          ets,但SO_RCVBUF选项没有。对于数据报   插座,          SO_SNDBUF值对传出的大小施加上限   数据-          克。此限制计算为加倍(参见   socket(7))选项          值少于32字节用于开销