一、套接字选项的设置
二、getsockopt、setsockopt
#include<sys/socket.h>
int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);
int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);
//返回值:成功返回0;失败返回-1
- 参数:
sockfd 指向一个已打开的套接字描述符 level(级别) 指定系统中解释选项的代码或为通用套接字代码,或为某个特定于协议的代码(IPV4、IPV6、TCP、SCTP) optname 对应于level级别下面的选项 optval 一个指向某个变量的指针
用于设置/取得选项信息
optlen 对应于optval的大小/指针大小
功能:
- 用于设置/获得套接字选项
套接字选项大致分为两种类型
- ①启用或禁止某个特性的二元选项(称为标志选项)
- ②取得并返回我们可以设置或检查的特定值的选项(称为值选项)
当我们调用getsockopt时
- *optval如果返回值是0:表示相应选项被禁止
- *optval如果返回值是非0:表示相应选项被启用
当我们调用setsockopt时
- 赋予*optval的值为0:表示禁用该选项
- 赋予*optval的值为非0:表示启用该选项
三、套接字选项汇总
下面表格的格式说明
- 如果标志列不含有
,那么相应选项用于在用户进程与系统之间传递所指定数据类型的值
- 数据类型表示optval的数据类型(如果是结构体类型,就在后面加{},例如struct linger表示为linger{})
- get:代表是否可以获得该选项
- set:代表是否可以设置该选项