Linux设置网络缓冲区大小(TCP/UDP)

一、修改套接字socket的缓存大

echo 65536 > /proc/sys/net/core/rmem_max        #收缓冲区最大值
echo 256960 > /proc/sys/net/core/wmem_max        #发缓冲区最大值
echo 65536 > /proc/sys/net/core/rmem_default        #收缓冲区默认值
echo 65536 > /proc/sys/net/core/wmen_default        #发缓冲区默认值

 可通过setsockopt进行设置,可以先通过getsockop获取缓存大小。

int buflen = 4*1024*1024;
设置读缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,sizeof(buflen)))
{
    return -1;

}
设置写缓存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_SNDBUF,&buflen,sizeof(buflen)))
{
    return -1;

}
socklen_t getnumlen=4;
读取写缓存大小
if(0!=getsockopt(g_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,&getnumlen))
{
    printf("\n%s\n",strerror(errno));
    return -1;
}

二、修改TCP接收/发送缓冲区

三个值分别代表 最小值、 默认值、 最大值

echo "4096 32768 65536" > /proc/sys/net/ipv4/tcp_rmem        #tcp收缓冲区的默认值

echo "4096 65536 256960" > /proc/sys/net/ipv4/tcp_wmem        #tcp发缓冲区默认值

三、修改UDP接收/发送缓冲区 

echo "8388608" > /proc/sys/net/core/rmem_default        #udp接收缓冲区的默认值
echo "8388608" > /proc/sys/net/core/wmem_default        #udp发送缓冲区的默认值

 四、修改网络设备接收队列

设置接收队列的长度为500。

echo 500 > /proc/sys/net/core/netdev_max_backlog

五、TCP重传次数 

设置tcp重传次数为5。

echo 5 > /proc/sys/net/ipv4/tcp_retries2

你可能感兴趣的:(linux,udp,网络)