POSIX中UNIX数据报的最大长度

时间:2019-07-06 11:40:54

标签: posix datagram unix-socket

给定socket(AF_UNIX, SOCK_DGRAM, 0),在不接收EMSGSIZE或与无效消息相关的任何其他错误号的情况下可以发送的最大保证数据报大小(以字节为单位)。另一个要求是,该消息将以原子方式发送,这意味着它不会被拆分,从而迫使此类消息的接收者将其从各个部分拼接起来。

我正在寻找POSIX标准定义的常量,但到目前为止我找不到。

1 个答案:

答案 0 :(得分:0)

没有保证。 Linux具有操作系统配置参数net.core.{r,w}mem_max,我的机器在发行版默认值为208KB。阅读/proc/sys/net/core/rmem_max等以查看限制。对于真正的高带宽ipc,无论如何,您都想要一个共享内存环形缓冲区之类的东西,无需遍历操作系统来处理每条消息,只需在空闲等待缓冲区时唤醒另一端。

DGRAM消息始终是完整发送的,AF_UNIX(又名AF_LOCAL)上没有分段(因为它完全在框内)。如果您没有提供足够大的接收缓冲区,则剩余的很可能会被丢弃。