在Linux中未正确设置SCTP RCVBUF

在Linux中未正确设置SCTP RCVBUF,linux,sctp,Linux,Sctp,我试图将RCVBUF设置为1MB//1048576,但在通过getsockopt读取该值时,设置后的值始终为2MB//2097152 有人能告诉我下面的代码有什么问题吗 unsigned int rcvBuf = getRcvBufValue(); if (setsockopt (channelfd, SOL_SOCKET, SO_RCVBUF, &rcvBuf,sizeof (rcvBuf)) == -1) { cout<<"RCV

我试图将RCVBUF设置为1MB//1048576,但在通过getsockopt读取该值时,设置后的值始终为2MB//2097152 有人能告诉我下面的代码有什么问题吗

    unsigned int rcvBuf = getRcvBufValue();
    if (setsockopt (channelfd, SOL_SOCKET, SO_RCVBUF, &rcvBuf,sizeof (rcvBuf)) == -1) 
  {
         cout<<"RCV BUF IS NOT SET";
  }
      int rcvbuf = -1;
      socklen_t Rsize = sizeof(rcvbuf);
      getsockopt (channelfd, SOL_SOCKET, SO_RCVBUF,&rcvbuf,&Rsize);
      cout<<rcvbuf;
unsigned int rcvBuf=getRcvBufValue();
if(setsockopt(channelfd,SOL_SOCKET,SO_RCVBUF,&RCVBUF,sizeof(RCVBUF))=-1)
{

cout以下是
man 7 socket
中关于SO_RCVBUF选项的内容:

SO_RCVBUF

设置或获取以字节为单位的最大套接字接收缓冲区。 内核将该值加倍(以留出记账空间) 当使用setsockopt(2)进行设置时,该值加倍 由getsockopt(2)返回。默认值由 /proc/sys/net/core/rmem_默认文件,允许的最大值为 由/proc/sys/net/core/rmem_max文件设置。最小值(加倍) 此选项的值为256