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

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

typedef struct linger { 
      u_short l_onoff;    //开关,零或者非零 
      u_short l_linger;   //优雅关闭最长时限 
    } linger; 
l_onoff l_linger closesocket行为 发送队列 底层行为
忽略 立即返回。 保持直至发送完成。 系统接管套接字并保证将数据发送至对端。
非零 立即返回。 立即放弃。 直接发送RST包,自身立即复位,不用经过2MSL状态。对端收到复位错误号。
非零 非零 阻塞直到l_linger时间超时或数据发送完成。(套接字必须设置为阻塞zhuan) 在超时时间段内保持尝试发送,若超时则立即放弃。 超时则同第二种情况,若发送完成则皆大欢喜。

SO_LINGER和优雅关闭连接相关推荐

  1. Socket编程中的强制关闭与优雅关闭及相关socket选项

    以下描述主要是针对windows平台下的TCP socket而言. 首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包( ...

  2. 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性

    文章目录 六.四次挥手 与 TIME_WAIT 6.1 TIME_WAIT 的作用 6.2 TIME_WAIT 的危害和方案 七.server 用 shutdown() 优雅关闭 7.1 close( ...

  3. Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭

    上周发了一篇关于Spring Boot中使用@Async来实现异步任务和线程池控制的文章:<Spring Boot使用@Async实现异步调用:自定义线程池>.由于最近身边也发现了不少异步 ...

  4. GRPC: 如何优雅关闭进程(graceful shutdown)

    简介: 本文将介绍优雅关闭 gRPC 微服务.在进程收到关闭信号时,我们需要关闭后台运行的逻辑,比如,MySQL 连接等等. 介绍 本文将介绍优雅关闭 gRPC 微服务. 什么是优雅关闭? 在进程收到 ...

  5. CLOSE关闭连接的各种情况

    以一个简单的echo服务器为例,客户端从标准输入读入字符,发送给服务器,服务器收到后再原样返回,客户端收到后打印到标准输出. 那么,关于套接字的关闭有以下几种情形: 1,客户端关闭连接: 1.1,客户 ...

  6. Libuv 句柄优雅关闭

    Libuv 句柄优雅关闭   当服务端与客户端处于连接状态时,如果客户端应用进程突然关闭,我们可以直接使用Libuv中的uv_close暴力断开两端的连接,这个过程是不管当前服务端是否有想要往客户端句 ...

  7. springboot2.0优雅关闭

    本案例使用的是springboot2.0.4 当把打包好的jar包发布到服务器,并通过java -jar运行,一般要把springboot项目关闭大多数都是先找到项目的pid,然后直接kill pid ...

  8. K8s Pod优雅关闭,没你想象的那么简单!

    更新部署服务时,旧的 Pod 会终止,新 Pod 上位.如果在这个部署过程中老 Pod 有一个很长的操作,我们想在这个操作成功完成后杀死这个 pod(优雅关闭),如果无法做到的话,被杀死的 pod 可 ...

  9. 06 重启-优雅关闭

    重启服务,指的是一个关闭.启动进程的完成过程. 目前所有服务基本都无单点问题,都是集群化部署.对一个服务的关闭.启动进程来说,启动的流程基本上问题不大,可以由集群的统一管理器,比如 Kubernete ...

最新文章

  1. python从数据库取数据保存为excel_python读取数据库表数据并写入excel
  2. Unity shader学习之Grab Pass实现玻璃效果
  3. CDI中的事务异常处理
  4. 工业以太网在工业控制中的运用
  5. fopen的路径怎么写_用C++写光线追踪:单根光线的渲染
  6. 城市路(信息学奥赛一本通-T1381)
  7. VS2008(C#)子页嵌套母版页的控件访问方法(二)
  8. 《深入理解 Spring Cloud 与微服务构建》第十四章 服务链路追踪 Spring Cloud Sleuth
  9. Ural_1586. Threeprime Numbers (DP)
  10. ServletContextListener小小总结
  11. 中间件技术是一种计算机游戏,游戏界面中间件有哪些
  12. 知识图谱实现公安情报分析(人工智能系列)
  13. java面试自我介绍
  14. ​极飞无人机IPO申请获受理!主打农业应用,西安电子科技大学校友创立,高瓴百度是股东...
  15. django.db.migrations.exceptions.BadMigrationError: Migration urls in app book has no Migration class
  16. 机械臂求运动学逆解的Pieper准则
  17. Golang学习(十五) 数组排序和二分查找
  18. verilog呼吸灯
  19. python练习题——十大歌手
  20. Mysql--01.安装

热门文章

  1. 第五:Python发送邮件时获取最新测试报告并发送邮件
  2. mpvue返回上一个页面_Mpvue+Vant-Weapp开发小程序遇坑之解决系列
  3. cmake中添加引用动态链接_C# 添加、编辑、删除PPT中的超链接
  4. 若依如何配置允许跨域访问?
  5. Java通过反射机制修改类中的私有属性的值
  6. 项目计划与控制-若干题目
  7. 保密作战--在网络上隐藏自己
  8. 10截图时屏幕变大_最全的MAC端截图工具推荐,寻找适合自己的截图工具
  9. 支持同步的php目录,php – rsync同步省略目录
  10. java学到什么程度安卓_自学Android到什么程度才能找到工作?