3、http网络编程——struct linger
TCP连接断开的时候调用close socket函数,有优雅的断开和强制断开两种方式.
那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。
struct linger {int l_onoff;int l_linger;
};
三种断开方式:
① l_onoff = 0; l_linger忽略
close()立刻返回,底层会将未发送完的数据发送完成后再释放资源,即优雅退出。
② l_onoff != 0; l_linger = 0;
close()立刻返回,但不会发送未发送完成的数据,而是通过一个REST包强制的关闭socket描述符,即强制退出。
③ l_onoff != 0; l_linger > 0;
close()不会立刻返回,内核会延迟一段时间,这个时间就由l_linger的值来决定。如果超时时间到达之前,发送完未发送的数据(包括FIN包)并得到另一端的确认,close()会返回正确,socket描述符优雅性退出。否则,close()会直接返回错误值,未发送数据丢失,socket描述符被强制性退出。需要注意的时,如果socket描述符被设置为非堵塞型,则close()会直接返回值。
3、http网络编程——struct linger相关推荐
- python 网络编程 struct解包时报错 struct.error: unpack requires a buffer of 4 bytes
报错信息 D:\Donta_tensorflow-yolov3\python\python.exe D:/10_gitee/network_programming/避障程序信号及图像接收端/20100 ...
- python的功能模块_Python的功能模块[1] - struct - struct 在网络编程中的使用
struct模块/ struct Module 在网络编程中,利用 socket 进行通信时,常常会用到 struct 模块,在网络通信中,大多数传递的数据以二进制流(binary data)存在.传 ...
- python 网络编程--socket模块/struct模块
socket模块: 客户端:CS架构, client -> server 浏览器:BS架构, browser -> server 网络通信本质:传输字节 doc命令查看ip地址:ipc ...
- Linux网络编程基础
2019独角兽企业重金招聘Python工程师标准>>> (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的 ...
- TCP/IP网络编程 - 基础学习
1. 创建Socket #include<sys/types.h> #include<sys/socket.h>int sock = ::socket(PF_INET, SOC ...
- 2014阿里巴巴实习生招聘-研发工程师笔试题/网络编程小结
一.单选 1.假设一个主机ip为192.168.5.121,子网掩码为255.255.255.248,则该主机的网络号部分(包括子网号部分)为-- A.192.168.5.12 B 192.168. ...
- C语言之网络编程(必背知识点)
一.认识网络 1.网络发展史 网络的来历_百度知道 ARPnetA--Internet--移动互联网--物联网 2.局域网和广域网 局域网(LAN) 局域网的缩写是LAN,local area ne ...
- Linux 高性能服务器网络编程(一)
Linux 高性能服务器网络编程 Linux网络编程基础API Socket 地址API 通用socket 地址 专用Sokect地址 IP地址转换函数 创建socket(socket) 命名(绑定) ...
- Linux网络编程入门
(一)Linux网络编程--网络知识介绍 linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. ...
- Linux网络编程 入门
Linux网络编程入门 (转载) (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...
最新文章
- 从一亩三分地转——“有代码的地方,就有江湖 - 冯诺伊曼.金庸”
- linux下ftp服务阶段实验(3)
- php员工积分绩效,详解绩效积分奖励制
- 2023中国科学技术大学计算机考研信息汇总
- Matlab-杆单元整体刚度矩阵组装(有限元基础-曾攀)
- 【windows】win10录屏录屏内声音
- 如何手动彻底消除U盘使用痕迹
- 【安全知识分享】PPTX|精益安全管理(130页)(附下载)
- 【quick-cocos2d-lua】 疯狂牛牛
- 汇编语言--微机CPU的指令系统(五)(循环指令)
- 小米基于OpenStack搭建私有云平台技术架构大揭秘!
- python不重复排列组合_python解决排列组合
- 普通话测试软件哪个不要钱,普通话测试软件哪个好_普通话测试软件靠谱吗_不要钱的普通话测试软件...
- Lance老师UI系列教程第三课-QQ登录注册界面的实现(android-2012最新版)
- icomoon 下载及使用
- organization --form 表单中organization 数据来源
- JS求三位水仙花数,及自方幂数
- 52单片机 (十七)AD DA 数模转换
- CINEMA 4D快捷键(C4D)
- B端系统体验好不好,尼尔森十大可用性原则
热门文章
- eclipse 插件 subclipse plugin 中修改已经登录的帐户密码的方法
- Wince Cab Manager___cab工具
- 网站pv 和服务器数量,聊一聊PV和并发、以及计算web服务器的数量的方法
- linux检查nfs服务,Linux-nfs服务
- 按顺序读取选中的复选框
- html把毫秒转换成年月日,JS实现获取毫秒值及转换成年月日时分秒的方法
- 行星级计算机,称霸两千余年的最快“计算机”——我国的算盘,两弹一星都靠它...
- 编译OpenJDK8-u332:/bin/sh: 1: [: -a: unexpected operator/line 0: [: too many arguments
- Failed to register native method nativeSetStatusCallback in base.apk
- error: implicit declaration of function ‘VerifyFixClassname‘ is invalid in C99 [-Werror,-Wimplicit-f