博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
close_socket断开连接的方式
阅读量:5251 次
发布时间:2019-06-14

本文共 893 字,大约阅读时间需要 2 分钟。

struct linger

TCP连接断开的时候调用closesocket函数,有优雅的断开和强制断开两种方式.

那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。

linger结构体数据结构如下:

struct linger

{

int l_onoff;

int l_linger;

};

有三种组合方式:

第一种

l_onoff = 0;

l_linger忽略

这种方式下,就是在closesocket的时候立刻返回,底层会将未发送完的数据发送完成后再释放资源,也就

是优雅的退出。

第二种

l_onoff非零

l_linger = 0;

这种方式下,在调用closesocket的时候同样会立刻返回,但不会发送未发送完成的数据,而是通过一个REST包强制的关闭socket描述符,也就是强制的退出。

第三种

l_onoff非零

l_linger > 0

这种方式下,在调用closesocket的时候不会立刻返回,内核会延迟一段时间,这个时间就由l_linger得值来决定。如果超时时间到达之前,发送完未发送的数据(包括FIN)并得到另一端的确认,closesocket会返回正确,socket描述符优雅性退出。否则,closesocket会直接返回错误值,未发送数据丢失,socket描述符被强制性退出。需要注意的时,如果socket描述符被设置为非堵塞型,则closesocket会直接返回值。

Linux下需要包含头文件<arpa/inet.h>

具体用法:

struct linger ling = {0, 0};

setsockopt(socketfd, SOL_SOCKET, SO_LINGER, (void*)&ling, sizeof(ling));

原文

http://www.cnblogs.com/caosiyang/archive/2012/03/29/2422956.html

转载于:https://www.cnblogs.com/mydomain/archive/2013/02/24/2924299.html

你可能感兴趣的文章
企业IT管理员IE11升级指南【12】—— 兼容视图列表介绍
查看>>
查看jdk使用的是什么垃圾收集器
查看>>
[React] react.js的一些库和用法
查看>>
云服务器最新选择
查看>>
Python学习系列----第三章 控制流
查看>>
Java网络编程总结
查看>>
Clang开发注意事项
查看>>
centos7.3安装wordpress
查看>>
{sharepoint} Setting List Item Permissions Programatically in sharepoint
查看>>
一步一步学Silverlight 2系列(15):数据与通信之ASMX
查看>>
R语言 创建空的数据框
查看>>
select for update
查看>>
UIBarButtonItem-添加自定义Left或者Right按钮 <总结>
查看>>
八皇后问题
查看>>
[Java]Jersey Spring Integration Demo
查看>>
富文本编辑器 - wangEditor 插入代码
查看>>
请求转发和重定向的区别
查看>>
MeshLab中插件的添加过程
查看>>
关于跨域的实验
查看>>
导航,头部,CSS基础
查看>>