本文主要参照MSDN文档,以windows为例,讲述socket编程中
SO_LINGER
选项的使用
SO_LINGER选项用以用以设定一个socket在关闭时队列中的待发送数据如何处理以及closesocket
函数,该结构定义如下:
1 | typedef struct linger { |
成员
l_onoff
标识在调用closesocket
后该socket是否仍停留一段时间从而使得队列中的数据发送出去,这个成员可以有如下取值:
取值 | 含义 |
---|---|
0 | close函数立即返回,socket关闭,数据由后台发送,应用层不再知晓 |
非0 | socket会停留一段时间 |
l_linger
取值 | 含义 |
---|---|
0 | close函数立即返回,数据丢弃,发送RST 报文该服务端,服务端收到后立即管理连接,这样可以不经过四次挥手来关闭连接 |
非0 | close函数阻塞到超时时间,若为发送完成则发送RST 报文 |