介绍
#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_IP/IPPROTO_TCP
- optname:要设置的选项名
- optval:指向存放选项值的缓冲区
- optlen:缓冲区长度
返回值:
- 成功返回 0
- 失败返回 -1,并设置 errno
简单使用
/*
SO_LINGER 选项用于控制 close 系统调用在关闭 TCP 连接时的行为。
默认情况下,用 close 系统调用关闭一个 socket 时,close 立即返回,
TCP 模块负责把该 socket 对应的 TCP 发送缓冲区中残留的数据发送给对方。
*/
/*
#include <sts/scoket.h>
struct linger {
int l_onoff;
int l_linger;
}
当 l_onoff = 1,l_linger = 0。close 立即返回,TCP 模块将丢弃被关闭的 socket
对应的 TCP 发送缓冲区中残留的数据,同时给对方发送一个复位报文段。给服务器提供了
异常终止一个连接的方法
*/
struct linger tmp = {1, 0};
setsockopt(listenfd, SOL_SOCKET, SO_LINGER, &tmp, sizeof(tmp));
注意事项
无