SO_LINGER和优雅关闭连接

 

当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。

下方代码段显示linger结构语法,表格为不同参数情况下的套接字行为。

 
 
  1. typedef struct linger { 
  2.   u_short l_onoff;    //开关,零或者非零 
  3.   u_short l_linger;   //优雅关闭最长时限 
  4. } linger; 
l_onoffl_lingerclosesocket行为发送队列底层行为
忽略立即返回。保持直至发送完成。系统接管套接字并保证将数据发送至对端。
非零立即返回。立即放弃。直接发送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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值