SO_LINGER选项使用方式

本文主要参照MSDN文档,以windows为例,讲述socket编程中SO_LINGER选项的使用

SO_LINGER选项用以用以设定一个socket在关闭时队列中的待发送数据如何处理以及closesocket函数,该结构定义如下:

1
2
3
4
typedef struct linger {
u_short l_onoff;
u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;

成员

l_onoff

标识在调用closesocket后该socket是否仍停留一段时间从而使得队列中的数据发送出去,这个成员可以有如下取值:

取值 含义
0 close函数立即返回,socket关闭,数据由后台发送,应用层不再知晓
非0 socket会停留一段时间

l_linger

取值 含义
0 close函数立即返回,数据丢弃,发送RST报文该服务端,服务端收到后立即管理连接,这样可以不经过四次挥手来关闭连接
非0 close函数阻塞到超时时间,若为发送完成则发送RST报文