SO_RCVBUF大小如何与传入的数据包大小相关联?

时间:2016-02-15 18:55:31

标签: c linux sockets networking berkeley-sockets

将套接字接收缓冲区设置为指定的字节数,直接与可以存储的大小消息数相关联吗?

示例:
如果通过UDP将100字节消息连续发送到设置为4,000字节的套接字缓冲区,我是否可以期望缓冲区能够保存40条消息?

我认为设置缓冲区大小,如下所示:

int size = 4000;
setsockopt(id, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size));  

让缓冲区从传入的数据包中填充,将产生一个包含40条消息的缓冲区。

关闭UDP发送器并处理缓冲区后,这不是我观察到的 尽管我的消息是100字节,但似乎4,000字节缓冲区只能容纳4条消息。

100字节消息如何占用缓冲区中的1,000个字节? 这有意义吗?造成这种情况的原因是什么,以及如何根据可以保存的消息数来计算缓冲区大小?

编辑 duplicated question无法解决我的问题 那里的用户错误地呼叫setsockopt 我正在尝试查找描述套接字接收缓冲区与实际可以保存的大小消息数之间关系的文档。

0 个答案:

没有答案