当前位置: 技术问答>linux和unix
求教:设置socket接收缓存区大小失败?
来源: 互联网 发布时间:2016-06-16
本文导语: 我采用如下方式设置 int nRecvBuf=400000; setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)); 然后用getsockopt查看,发现没有设置上?可能的原因是什么呢? 另外如果我将nRecvBuf的值改小的话,设置后的缓冲区大小是...
我采用如下方式设置
int nRecvBuf=400000;
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
然后用getsockopt查看,发现没有设置上?可能的原因是什么呢?
另外如果我将nRecvBuf的值改小的话,设置后的缓冲区大小是我要求的二倍!这可能是什么原因呢?
另外在UDP方式下能将recvfrom设置为非阻塞的吗?
int nRecvBuf=400000;
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
然后用getsockopt查看,发现没有设置上?可能的原因是什么呢?
另外如果我将nRecvBuf的值改小的话,设置后的缓冲区大小是我要求的二倍!这可能是什么原因呢?
另外在UDP方式下能将recvfrom设置为非阻塞的吗?
|
mysysctl_tcp_rmem表示接收缓冲区的大小限制,
由mytcp_prot的成员sysctl_rmem指向,其缺省值分别是4096bytes,87380bytes,174760bytes。
它们可以通过/proc文件系统,在/proc/sys/net/ipv4/tcp_rmem中进行修改。
由mytcp_prot的成员sysctl_rmem指向,其缺省值分别是4096bytes,87380bytes,174760bytes。
它们可以通过/proc文件系统,在/proc/sys/net/ipv4/tcp_rmem中进行修改。
|