setsockopt
设置
套接口的选项。
#include <
sys/types.h>
#include <sys/socket.h>
int
setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
sockfd:标识一个
套接口的描述字。
level:选项定义的层次;支持SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPV6。
optname:需设置的选项。
optlen:optval
缓冲区长度。
linux
内核中定义为:
static int
setsockopt(struct
socket *sock,
int lvl, int opt, char __user *ov, unsigned int ol);
setsockopt- set socketoption
@sock: socketstructure
@lvl: option level
@opt: option identifie
@ov: pointer to new option value
@ol: length of option value
For stream sockets only, accepts and ignores all IPPROTO_TCP options
(to ease compatibility).
Returns 0 on success, errno otherwise
编辑本段注释
setsockopt()
函数用于任意类型、任意状态
套接口的设置选项值。尽管在不同协议层上存在选项,但本
函数仅定义了最高的“
套接口”层次上的选项。选项影响
套接口的操作,诸如加急数据是否在普通数据流中接收,广播数据是否可以从套接口发送等等。
有两种
套接口的选项:一种是布尔型选项,允许或禁止一种特性;另一种是整形或结构选项。允许一个布尔型选项,则将optval指向非零整形数;禁止一个选项optval指向一个等于零的整形数。对于布尔型选项,optlen应等于sizeof(int);对其他选项,optval指向包含所需选项的整形数或结构,而optlen则为整形数或结构的长度。SO_LINGER选项用于控制下述情况的行动:
套接口上有排队的待发送数据,且
closesocket()调用已执行。参见close
socket()
函数中关于SO_LINGER选项对
closesocket()语义的影响。