1. int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)
    1. #include<sys/types.h>
    2. #include<sys/socket.h>
    3. int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)

    参数:
    level:指定控制套接字的层次.可以取三种值:
    1)SOL_SOCKET:通用套接字选项.(应用层)
    2)IPPROTO_IP:IP选项. (传输层)
    3)IPPROTO_TCP:TCP选项(网络层)
    optname:指定控制的方式(选项的名称),我们下面详细解释 
    optval:获得或者是设置套接字选项.根据选项名称的数据类型进行转换

    SOL_SOCKET:
    SO_BROADCAST 允许发送广播数据  int
    SO_DEBUG 允许调试 int
    SO_DONTROUTE 不查找路由 int
    SO_ERROR 获得套接字错误 int
    SO_KEEPALIVE 保持连接 int
    SO_LINGER 延迟关闭连接 struct linger
    SO_OOBINLINE 带外数据放入正常数据流 int
    SO_RCVBUF 接收缓冲区大小 int
    SO_SNDBUF  发送缓冲区大小 int
    SO_RCVLOWAT 接收缓冲区下限 int
    SO_SNDLOWAT  发送缓冲区下限 int
    SO_RCVTIMEO 接收超时 struct timeval
    SO_SNDTIMEO 发送超时 struct timeval
    SO_REUSERADDR 允许重用本地地址和端口 int
    SO_TYPE 获得套接字类型 int
    SO_BSDCOMPAT 与BSD系统兼容 int
    IPPROTO_IP:
    IP_HDRINCL 在数据包中包含IP首部 int
    P_OPTINOS IP首部选项 int
    IP_TOS 服务类型
    IP_TTL 生存时间 int
    IPPRO_TCP:
    TCP_MAXSEG TCP最大数据段的大小 int
    TCP_NODELAY 不使用Nagle算法 int
    1. struct timmeval{
    2. long tv_sec;//秒
    3. long tv_usec;//微秒
    4. }