数据报Unix域套接字由SNDBUF限制

时间:2015-05-13 01:27:34

标签: linux sockets dns datagram setsockopt

在Unix数据报域套接字上发送16字节数据包,其中SNDBUF保留在我的124928框的默认值上(使用getsockopt()验证)。还将max_dgram_qlen提升到512.出于测试目的,我的接收器在绑定到Unix数据报域套接字后正在休眠。

当我启动发件人时,我在发送423个数据包后开始收到EAGAIN错误(我正在使用MSG_DONTWAIT发送)。那时我只发送了大约7k(不包括任何标题),考虑到它的当前设置,似乎有点早就填满了SNDBUF。

为了验证它确实是限制发送的SNDBUF,我逐渐碰到了SNDBUF,直到它能够命中max_dgram_qlen(实际上它命中513)。我必须为此设置的SNDBUF值是75177(由getsockopt()返回的151554)。

任何想法都会受到高度赞赏,因为感觉好像我在这里遗漏了一些明显的东西。

0 个答案:

没有答案