SO_LINGER和优雅关闭连接
2013-02-01 21:19
429 查看
当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。
下方代码段显示linger结构语法,表格为不同参数情况下的套接字行为。
[/b]
可参考的资料:
http://msdn.microsoft.com/en-us/library/ms737582(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms739165(v=VS.85).aspx
http://blog.csdn.net/factor2000/archive/2009/02/23/3929816.aspx
FROM: /article/4571099.html
下方代码段显示linger结构语法,表格为不同参数情况下的套接字行为。
[/b]
typedef struct linger { u_short l_onoff; //开关,零或者非零 u_short l_linger; //优雅关闭最长时限 } linger;
l_onoff | l_linger | closesocket行为 | 发送队列 | 底层行为 |
零 | 忽略 | 立即返回。 | 保持直至发送完成。 | 系统接管套接字并保证将数据发送至对端。 |
非零 | 零 | 立即返回。 | 立即放弃。 | 直接发送RST包,自身立即复位,不用经过2MSL状态。对端收到复位错误号。 |
非零 | 非零 | 阻塞直到l_linger时间超时或数据发送完成。(套接字必须设置为阻塞zhuan) | 在超时时间段内保持尝试发送,若超时则立即放弃。 | 超时则同第二种情况,若发送完成则皆大欢喜。 |
http://msdn.microsoft.com/en-us/library/ms737582(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms739165(v=VS.85).aspx
http://blog.csdn.net/factor2000/archive/2009/02/23/3929816.aspx
FROM: /article/4571099.html
相关文章推荐
- SO_LINGER和优雅关闭连接
- SO_LINGER和优雅关闭连接
- SO_LINGER和优雅关闭连接
- SO_LINGER和优雅关闭连接
- 优雅关闭socket的方法:SO_LINGER
- 一例TCP优雅关闭失败SO_LINGER选项未起作用
- setsockopt 设置 SO_LINGER 选项 关闭连接
- tcp的关闭(shutdonw、close、SO_LINGER选项)与 连接断开情形判断
- setsockopt 设置 SO_LINGER 选项 关闭连接
- 异步socket优雅的关闭-CancelIO和SO_LINGER
- tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
- TCP异常终止连接及SO_LINGER选项
- Golang Socket Tcp 连接优雅关闭
- tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
- nginx延迟关闭机制SO_LINGER
- 优雅地关闭Socket;检测非正常断开的TCP连接
- 优雅地关闭Socket;检测非正常断开的TCP连接
- 关于SO_LINGER及TCP断开连接
- TCP的选项SO_LINGER设置延时关闭
- TCP异常处理(accept返回前连接中止)与SO_LINGER选项