通过 Unix 数据报域套接字发送 16 字节数据包,SNDBUF 保留在我的 124928 盒子上的默认值(用 验证getsockopt()
)。也max_dgram_qlen
达到了 512。出于测试目的,我的接收器在绑定到 Unix 数据报域套接字后当前正在休眠。
当我启动发件人时,我EAGAIN
在发送 423 个数据包后开始接收错误(我正在发送MSG_DONTWAIT
)。那时我只发送了大约 7k(不包括任何标题),考虑到它的当前设置,填充 SNDBUF 似乎有点早。
为了验证确实是 SNDBUF 限制了发送,我逐渐提高了 SNDBUF 直到它能够击中max_dgram_qlen
(实际上它击中 513)。我必须为此设置的 SNDBUF 值是 75177(由 返回的 151554 getsockopt()
)。
任何想法都将不胜感激,因为感觉好像我在这里遗漏了一些明显的东西。