int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)
#include<sys/types.h>
#include<sys/socket.h>
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 |
struct timmeval{
long tv_sec;//秒
long tv_usec;//微秒
}