用法:
#include <sys/types.h>#include <sys/socket.h>int getsockopt(int sock, int level, int optname, void optval, socklen_t optlen);int setsockopt(int sock, int level, int optname, const void optval, socklen_t optlen);
参数解释:
sock:将要被设置或者获取选项的套接字。

level:选项所在的协议层
optname:须要访问的选项名
optval:对付getsockopt()返回选项值的缓冲,对付setsockopt()指向包含新选项值的缓冲。
optlen:选项值的长度。
返回值解释:
实行成功返回0,失落败返回-1,errno被设置为以下的某个值;
EBADF:sock不是有效的文件描述符
EFAULT:optval指向的内存并有效的进程空间
EINVAL:optlen无效
ENOPROTOOPT:指定的协议层不能识别选项
ENOTSOCK:sock描述的不是套接字
level指定掌握套接字的层次,可以取三种值:
1.SOL_SOCKET:通用套接字选项
2.IPPROTO_IP:IP选项
3.IPPROTO_TCP:TCP选项
optname我们常用的是SO_RCVBUF,SO_SENDBUF 设置吸收/发送 缓冲区大小
把稳:当设置TCP套接口吸收缓冲区的大小时,函数调用顺序是很主要的,由于TCP的窗口规模选项是建立连接时用SYN与对方互换的,对付客户端SO_RCVBUF选项必须在connect之前设置的,对付做事器SO_RCVBUF选项必须在listen前设置。也便是在各自相对的连接建立之前设置。