struct linger
TCP连接断开的时候调用close socket函数,已经讨论过有优雅的断开和强制断开,那么如何设置断开连接的方式呢?
是通过设置socket描述符一个linger结构体属性。
linger结构体数据结构如下:
struct linger { int l_onoff; int l_linger; };
有三种组合方式:
第一种
l_onoff = 0;
l_linger忽略
这种方式下,就是在closesocket的时候立刻返回,底层会将未发送完的数据发送完成后再释放资源,也就是优雅的退出.
第二种
l_onoff非零
l_linger = 0;
这种方式下,在调用close socket的时候同样会立刻返回,但不会发送未发送完成的数据,而是通过一个REST包强制的关闭socket描述符,也就是强制的退出。
第三种
l_onoff非零
l_linger > 0
这种方式下,在调用close socket的时候不会立刻返回,内核会延迟一段时间,这个时间就由l_linger得值来决定。如果超时时间到达之前,发送完未发送的数据(包括FIN包)并得到另一端的确认,close socket会返回正确,socket描述符优雅性退出。
否则,close socket会直接返回错误值,未发送数据丢失,socket描述符被强制性退出。
需要注意的时,如果socket描述符被设置为非堵塞型,则close socket会直接返回值。
转载于:https://www.cnblogs.com/springside4/archive/2010/11/11/2481735.html
struct linger相关推荐
- struct linger
Linux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式. 那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性. linger结构体数据结 ...
- struct linger 用法
http://www.cnblogs.com/caosiyang/archive/2012/03/29/2422956.html Linux下tcp连接断开的时候调用close()函数,有优雅断开和强 ...
- Linux下getsockopt/setsockopt 函数说明
[getsockopt/setsockopt系统调用] 功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套 ...
- memcached(二)事件模型源码分析
在memcachedd中,作者为了专注于缓存的设计,使用了libevent来开发事件模型.memcachedd的时间模型同nginx的类似,拥有一个主进行(master)以及多个工作者线程(woker ...
- 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
来自:小林coding 每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 T ...
- 字选项套接字选项-java教程
今天一直在研究字选项之类的问题,现在正好有机会和大家分享一下. ================================================ 套接字机制供给了两个套接字选项接口来 ...
- linux 套接字选项定义
2019独角兽企业重金招聘Python工程师标准>>> linux 套接字选项定义 2011-07-28 14:31 1.closesocket(一般不会立即关闭而经历TIME_WA ...
- Linux下高性能网络编程中的几个TCP/IP选项
Linux下高性能网络编程中的几个TCP/IP选项 转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847 最近在新的平台上测试程序,以 ...
- 面向连接的Socket Server的简单实现
一.基本原理 有时候我们需要实现一个公共的模块,需要对多个其他的模块提供服务,最常用的方式就是实现一个Socket Server,接受客户的请求,并返回给客户结果. 这经常涉及到如果管理多个连接及如何 ...
最新文章
- u-boot编译过程分析
- 抽奖 | 送树莓派PICO开发板、机械键盘、声控鼠标
- JVM源码分析之System.currentTimeMillis及nanoTime原理详解
- 搭建PHP本地服务器(XAMPP)
- Vue Bootstrap OSS 实现文件追加上传、断点续传、极速秒传
- ubuntu 16.04 Nginx源码部署安装
- JS Date格式化为yyyy-MM-dd类字符串
- php图片居中在div,css如何实现图片在div中垂直居中
- Shell脚本编程之(七)Shell脚本的追踪与debug
- 可恨的KYLIN OS:动不动就不支持老机
- 1月23日阴阳师服务器维护,阴阳师1月23日体验服更新 双神降临概率UP
- 杰理之录音详细流程框图【篇】
- 怎么修改Word每行文字间距
- 启发式路径搜索算法介绍
- FFmpeg x265安装
- 项目初期如何确定项目的进度计划和资源需求?
- 安装ps教程,ps软件安装
- 计算机图形学2d作业,计算机图形学作业
- 机器学习项目是如何开发和部署的?
- Gitlab访问突然出现 403 forbidden解决方案
热门文章
- javaweb在线问卷系统_2020 最新流行的Java Web报表工具比对
- java获取u盘_实例分享java监听u盘的方法
- Html跨页面调用函数,一个cshtml如何在另一个cshtml中调用一个函数?
- Android 客户端与服务器交互方式
- php 获取警告信息,获取PHP警告错误信息的解决方法_PHP教程
- 惠普服务器查询ilo信息,Hp服务器iLO IML硬件日志收集与远程巡检
- 禅道备份功能_更新禅道燃尽图及数据备份
- 如何控制油门更准确?
- H.264的码率控制算法
- Cookie / Session 的机制与安全