在Linux中未正确设置SCTP RCVBUF

时间:2012-08-06 10:19:39

标签: 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 BUF IS NOT SET";
  }
      int rcvbuf = -1;
      socklen_t Rsize = sizeof(rcvbuf);
      getsockopt (channelfd, SOL_SOCKET, SO_RCVBUF,&rcvbuf,&Rsize);
      cout<<rcvbuf;

1 个答案:

答案 0 :(得分:2)

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

  

SO_RCVBUF

     

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