socket 选项

Posted on 2023-02-27 19:34  lyc2002  阅读(22)  评论(0编辑  收藏  举报

介绍

#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));

注意事项