LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则 .
const int udp_recvbufsize = 384 * 1024 ;
int result = ::setsockopt(m_hSocket, SOL_SOCKET, SO_RCVBUF,?
? (char*)&udp_recvbufsize, sizeof(int));
// 如果是由于你發送的速率較高而引起的,如500kbit/s, 那么設置大點的UDP緩沖區是比較有效的.
?
LINUX 下tcp 和 udp 套接字收發緩沖區的大小決定規則
分類: 網絡編程 LINUX 2012-05-18 16:02 413人閱讀 評論(0) 收藏 舉報1. tcp 收發緩沖區默認值?
[root@qljt core]# cat /proc/sys/net/ipv4/tcp_rmem?
4096??? 87380?? 4161536
87380??:tcp接收緩沖區的默認值
?
[root@qljt core]# cat /proc/sys/net/ipv4/tcp_wmem
4096??? 16384?? 4161536
16384??: tcp 發送緩沖區的默認值
?
2. tcp 或udp收發緩沖區最大值
[root@qljt core]# cat /proc/sys/net/core/rmem_max
131071
131071:tcp 或 udp 接收緩沖區最大可設置值的一半。
也就是說調用 setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen);? 時rcv_size 如果超過 131071,那么
getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 去到的值就等于 131071 * 2 = 262142
?
[root@qljt core]# cat /proc/sys/net/core/wmem_max?
131071
131071:tcp 或 udp 發送緩沖區最大可設置值得一半。
跟上面同一個道理
?
3. udp收發緩沖區默認值
[root@qljt core]# cat /proc/sys/net/core/rmem_default??
111616:udp接收緩沖區的默認值
?
[root@qljt core]# cat /proc/sys/net/core/wmem_default
111616
111616:udp發送緩沖區的默認值
?
4. tcp 或udp收發緩沖區最小值
tcp 或udp接收緩沖區的最小值為 256 bytes,由內核的宏決定;
tcp 或udp發送緩沖區的最小值為 2048 bytes,由內核的宏決定
?
總結
以上是生活随笔為你收集整理的LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则 .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1、管理员登录中间件和注销
- 下一篇: 每日一九度之 题目1030:毕业bg