zoukankan      html  css  js  c++  java
  • 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_onoff l_linger closesocket行为 发送队列 底层行为
    忽略 立即返回。 保持直至发送完成。 系统接管套接字并保证将数据发送至对端。
    非零 立即返回。 立即放弃。 直接发送RST包,自身立即复位,不用经过2MSL状态。对端收到复位错误号。
    非零 非零 阻塞直到l_linger时间超时或数据发送完成。(套接字必须设置为阻塞zhuan) 在超时时间段内保持尝试发送,若超时则立即放弃。 超时则同第二种情况,若发送完成则皆大欢喜。
  • 相关阅读:
    fiddler教程--拦截并篡改
    string
    希尔排序(缩小增量排序)
    k-选取问题
    完善版本散列表
    c++ BST继承自二叉树
    DEDECMS与DZ论坛如何整合,DEDE网站调用DZ内容
    DEDECMS如何实现定时发布文章
    DEDECMS如何设置图片上传加水印
    DEDE如何制作不同背景的列表
  • 原文地址:https://www.cnblogs.com/developing/p/10888563.html
Copyright © 2011-2022 走看看