Socket缓冲区大小修改与系统设置
每个Socket在Linux中都映射为一个文件,并与内核中两个缓冲区(读缓冲区、写缓冲区)相关联。
或者说,每个Socket拥有两个内核缓冲区。
有时,我们需要修改缓冲区的内核限制的最大值,使其符合我们的实际需求。
https://blog.csdn.net/liuguanghui1988/article/details/53375269)
case SO_SNDBUF:
if (val > sysctl_wmem_max)
val = sysctl_wmem_max;
if ((val * 2 ) < SOCK_MIN_SNDBUF)
sk->sk_sndbuf = SOCK_MIN_SNDBUF;
else
sk->sk_sndbuf = val * 2 ;
系统这么做,猜测可能是由于UDP解包封包需要的额外的空间。
所以,我称r/wmem_max为:可由程序设置的缓冲区最大值。