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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle PL/SQL匿名块(三)

转载: http://blog.163.com/lyq_163_2009/blog/static/134082696201071210464738/ //错误处理 declare v_temp number(4); begin select empno into v_temp from emp where deptno10; exception when too_many_rows then dbms_output.put_line(太多记录了...); wh…

rbac 权限分配, 基于formset实现,批量增加

这里需要两个知识点:  - formset  - 自动发现项目中的URL1. 什么是formset:  Django中 form组件 或 ModelForm组件,用于做一个表单的验证。 接收前端form表单中的数据,并进行验证。 并且还可以用于表单的渲染工作。 (就是直…

linux下unix timestamp 与 可视化时间/常规时间进行转换

unix timestamp 与 可视化时间/常规时间进行转换。 最近工作中需要根据可视化时间得到unix timestamp&#xff0c;完成工作之后记录下来了&#xff0c;防止下次遇到此问题时&#xff0c;又需要重新梳理&#xff0c;直接上代码了 &#xff1a; #include <iostream> #inc…

别让自己活的太累

人之所以会心累&#xff0c;就是常常徘徊在坚持和放弃之间&#xff0c;举棋不定。生活中总会有一些值得我们记忆的东西&#xff0c;也有一些必须要放弃的东西。放弃与坚持&#xff0c;是每个人面对人生问题的一种态度。勇于放弃是一种大气&#xff0c;敢于坚持何尝不是一种勇气…

SQL Server2008R2查询数据库的物理路径

1.首先在Management Studio管理窗口中选择数据库为master.2.再在查询命令窗口中输入以下语句&#xff1a;select name,fileName from sysaltfiles where name like %你要查询的数据库名称%转载于:https://blog.51cto.com/baiyan425/1119204

HDU 1247 Hat’s Words 字典树(Trie树)

HDU 1247 Hat’s Words 字典树(Trie树) 字典树的建立是应该都是一样的 下面是我的做法: 建立完后, 对每一个单词都进行find_string()判断是否符合, 分别对其分成两半, 用j分隔开(左闭右开); 分别find()其子串[0, j1), [j1, string_len), 当两子串都找到后,则输出此主串, 然后,b…

c++11中静态断言static_assert

c11中的静态断言(static_assert) 在c11中引入了&#xff0c;目的是在编译时就能检查处一些问题。写法如下&#xff1a; static_assert(常量表达式&#xff0c;提示字符串);如果第一个参数常量表达式的值为真(true或者非零值)&#xff0c;那么static_assert不做任何事情&#…

setBackgroundResource的一个问题

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff0c;<RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android" android:id"id/layout" android:layout_width"fill_parent" android:layout_height…

驅動開發學習筆記1

1&#xff1a;設備對象是系統為幫組軟件管理硬件而創建的數據結構&#xff0c;一個物理硬件可以有多個這樣的數據結構。處於堆棧最底層的設備對象稱為物理設備對象&#xff08;PDO&#xff09;; 2&#xff1a;操作系統的pnp管理器按照設備驅動程序的要求構造了設備對象堆棧。總…

c++11之std::move()

在c11中引入了std::move()&#xff0c;目的是将左值转换为右值&#xff0c;一般与右值引用一起使用。 先说下左值与右值的区别&#xff1a; 左值&#xff1a;能被赋值的值&#xff0c;能取到地址的值。例如&#xff1a; int a 100; 右值&#xff1a;临时值&#xff0c;取不到…

Memcache应用场景

Memcache应用场景介绍面临的问题对于高并发高访问的Web应用程序来说&#xff0c;数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式&#xff0c;而一个数据池连接数峰 值已经达到500的时候&#xff0c;那你的程序运行离崩溃的边缘也不远了。很多…

21.判断栈弹出顺序是否正确

题目描述&#xff1a; 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xff0c;序列4,5,3,2,1是该压栈序列对应的一个弹出序列&#xff…

mingw + msys 上编译 ffmpeg

下载以下文件 mingw msys msysdtk ffmpeg-0.6.1 1.安装 mingw &#xff0c;一路next d:\mingw 2.安装 msys &#xff0c;msysdtk 到同样的路径下,比如:d:\msys\1.0&#xff0c;ffmpeg需要用到perl&#xff0c;刚好msysdtk中有 3.整合 msys 和 mingw 创建文件 d:\msys\1.0\…

双向长短期神经网络(Bi-LSTM)-多输入时序预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码展示&#xff1a; 四、完整代码下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编…

C++类中protected访问权限问题

在c中&#xff0c;protected修饰的成员属性和成员函数的访问权限&#xff1a; (1)、本类中的成员函数(public/private/protected修饰的函数) (2)、友元函数和友元类 (3)、派生类中的成员函数可以访问对应基类中的protected成员属性和成员函数。 #include <iostream> …

微软的云笔记:OneNote+SkyDrive

OneNote是微软的一款笔记软件&#xff08;如果单说功能要绝对要比EverNote强大多了&#xff09;&#xff0c;它可以让你随时记录各种文字、图片&#xff0c;同时在格式排版方面它也继承了Word的强大编辑功能。但是随着各种移动办公需求的产生OneNote这种本地化的保存方式确实在…

【转】温州的南拳

南拳和北腿少林武当功太极八卦连环掌中华有神功在我国传统武术中素有南拳和北腿之分&#xff0c;实际上这种分法点出了我国南北地域拳风的特点&#xff0c;南方的拳术沉马寸劲、迅疾紧凑、重拳厉掌&#xff0c;着眼在拳&#xff1b;北方的拳路却是阔幅舒展、大开大合&#xff0…

day05-数据类型与操作

转载于:https://www.cnblogs.com/klw1/p/10727073.html

mysql 8.0 一条insert语句的具体执行流程分析(一)

最近在mysql 8.0的代码上开发新的功能的时候&#xff0c;梳理了insert语句的执行过程&#xff0c;由于insert语句比较复杂并且涉及的内容很多&#xff0c;在下面准备分3章节来分析&#xff0c;这是第一个章节&#xff0c;主要讲述sql解析和命令的分发部分。 代码版本&#xff…

开发高级 Web 部件

通过用户控件实现 Web 部件相当容易&#xff0c;但是也有一些弊端&#xff1a; 受限的重用&#xff1a;如果不手动复制 .ascx 文件到其他 Web 应用程序的目录下&#xff0c;就不能动态添加这些控件到其他 Web 应用程序的页面中。 受限的个性化&#xff1a;用户控件的个性化仅限…