1

通过 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())。

任何想法都将不胜感激,因为感觉好像我在这里遗漏了一些明显的东西。

4

0 回答 0