将套接字接收缓冲区设置为指定的字节数,直接与可以存储的大小消息数相关联吗?
示例:
如果通过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
我正在尝试查找描述套接字接收缓冲区与实际可以保存的大小消息数之间关系的文档。