首页 > 系统服务 > 详细

Linux Socket Programming by Example-第十二章 设置socket参数

时间:2014-04-15 04:23:49      阅读:545      评论:0      收藏:0      [点我收藏+]

这一章的难点是理解每个参数的物理意义。

一边问google一边问百度,感觉有些理解了,但又有些模糊。

真是纸上得来终觉浅,绝知此事要躬行。


不管怎么样,先简单了解下。


接口:

#include <sys/types.h>

#include <sys/socket.h>

int getsockopt(int s,

    int level,

    int optname,

    const void* optval,

   socklen_t *optlen);


int setsockopt(int s,

    int level,

    int optname,

    const void* optval,

   socklen_t optlen);


Level     与  Option Name

SOL_SOCKET SO_REUSEADDR

SOL_SOCKET SO_KEEPALIVE

SOL_SOCKET SO_LINGER

SOL_SOCKET SO_BROADCAST

SOL_SOCKET SO_OOBINLINE

SOL_SOCKET SO_SNDBUF

SOL_SOCKET SO_RCVBUF

SOL_SOCKET SO_TYPE

SOL_SOCKET SO_ERROR

SOL_TCP       SO_NODELAY


详细解释:

SO_SNDBUF    控制发送端缓冲区大小。

SO_RCVBUF   控制接收端缓冲区大小

注意:

1> 设置值必须满足一个 最大值与最小值, 本地写代码测试后发现是[256, 4* 1024* 1024]

查看文档,发现最大值是下面2个内核参数控制:

/proc/sys/net/core/rmem_max   r:read 接收端

/proc/sys/net/core/wmem_max   w:write 发送端

进一步可以执行:获取3个值  最小值 默认值  最大值

cat /proc/sys/net/ipv4/tcp_wmem

cat /proc/sys/net/ipv4/tcp_rmem

UDP的话,是下面3个: (意思还不是很明确)

cat /proc/sys/net/ipv4/udp_mem

cat /proc/sys/net/ipv4/udp_rmem_min

cat /proc/sys/net/ipv4/udp_wmem_min

2> 在这个区间内,获取值为设置值的2倍。即调用set(10000)后,get返回值为20000.


Linux Socket Programming by Example-第十二章 设置socket参数,布布扣,bubuko.com

Linux Socket Programming by Example-第十二章 设置socket参数

原文:http://blog.csdn.net/levinjoe/article/details/23707879

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!