问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何关闭一个TCP连接

发布网友 发布时间:2022-04-25 03:03

我来回答

5个回答

热心网友 时间:2023-10-22 13:21

从TCP协议角度来看,一个已建立的TCP连接有两种关闭方式,一种是正常关闭,即四次挥手关闭连接;还有一种则是异常关闭,我们通常称之为连接重置(RESET)。
首先说一下正常关闭时四次挥手的状态变迁,关闭连接的主动方状态变迁是FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT,而关闭连接的被动方的状态变迁是CLOSE_WAIT->LAST_ACK->TIME_WAIT。在四次挥手过程中ACK包都是协议栈自动完成的,而FIN包则必须由应用层通过closesocket或shutdown主动发送,通常连接正常关闭后,recv会得到返回值0,send会得到错误码10058。
除此之外,在我们的日常应用中,连接异常关闭的情况也很多。比如应用程序被强行关闭、本地网络突然中断(禁用网卡、网线拔出)、程序处理不当等都会导致连接重置,连接重置时将会产生RST包,同时网络络缓冲区中未接收(发送)的数据都将丢失。连接重置后,本方send或recv会得到错误码10053(closesocket时是10038),对方recv会得到错误码10054,send则得到错误码10053(closesocket时是10054)。
操作系统为我们提供了两个函数来关闭一个TCP连接,分别是closesocket和shutdown。通常情况下,closesocket会向对方发送一个FIN包,但是也有例外。比如有一个工作线程正在调用recv接收数据,此时外部调用closesocket,会导致连接重置,同时向对方发送一个RST包,这个RST包是由本方主动产生的。
shutdown可以用来关闭指定方向的连接,该函数接收两个参数,一个是套接字,另一个是关闭的方向,可用值为SD_SEND,SD_RECEIVE和SD_BOTH。方向取值为SD_SEND时,无论socket处于什么状态(recv阻塞,或空闲状态),都会向对方发送一个FIN包,注意这点与closesocket的区别。此时本方进入FIN_WAIT_2状态,对方进入CLOSE_WAIT状态,本方依然可以调用recv接收数据;方向取值为SD_RECEIVE时,双发连接状态没有改变,依然处于ESTABLISHED状态,本方依然可以send数据,但是,如果对方再调用send方法,连接会被立即重置,同时向对方发送一个RST包,这个RST包是被动产生的,这点注意与closesocket的区别。

热心网友 时间:2023-10-22 13:21

不知道题主的具体应用场景:
C++基于套接字的关闭操作有:
shutdown()
closesocket()

热心网友 时间:2023-10-22 13:22

如果你是server端,后台close(client_fd)即可。

热心网友 时间:2023-10-22 13:22

热心网友 时间:2023-10-22 13:23

找他他的进程ID,杀掉
你什么系统...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
淘宝买家差评删除流程是什么?具体步骤介绍 神拳李青多少钱 《英雄联盟》盲僧新皮肤睁眼介绍_《英雄联盟》盲僧新皮肤睁眼是什么_百 ... 至高之拳李青高清壁纸至高之拳李青 盲僧金虾皮肤致敬哥哥张国荣 新版皮肤爱的初体验 英雄联盟盲僧神龙尊者皮肤一览 QQ输入法手机版如何进入输入法设置菜单 福来者福往爱出者爱返是什么意思 电脑开机后鼠标自动移动 速度还非常快 为什么总有一大堆验证码发到我手机上。 急求!一篇上海金茂大厦1200字左右的观后感 C#服务端怎样主动断开连接? 顺义三高科技园区观后感 主动关闭了连接,那么服务器端是怎么知道关闭连接了 有感科技:我为什么能做好车载无线充电 TCP的客户端可以发起关闭连接,服务器可以主动关闭连接吗?如何关闭? 各位大哥大姐帮帮忙 找5篇北京科技馆的700字观后感 游上海科技馆有感600字 上海科技馆观后感的开头怎么写? 写一篇关于去上海科技馆的观后感,字数300字左右 主治医师和主任医师的区别? 中级医师职称报考条件是什么?有没有人知道? 主诊医师和主任医师有什么区别 谁能查询个人名下的所有电话 中国电信我是电信号别人要查我电话名字可以到营业厅能查吗? 陌生人查中国电信电话号码人的名字在营业厅可以查到吗? 主任医师和主治医师的区别是什么? 住院医师,主治医师,主任医师三者有什么区别 世界地理知识(初二用的上的) 给一个电话给公安局,公安局可以帮查出那个电话号码的名字吗? 游玩世纪公园博物馆观后感 nio 当客户端主动关闭连接,服务器端怎么才能知道 lol版本服务器关闭连接怎么回事 请问物理学在上海科技馆里的应用 英雄联盟版本服务器关闭连接是什么原因 在socket 编程中,假如一个客户端自己主动关闭了连接,那么服务器端是怎么知道关闭 如何在服务器端通过ip地址或mac地址主动关闭与客户端的网络共享连接 为什么与服务器连接会被直接关闭 2020年云南报考*学历 什么时候报名 要求什么学历才行可报 正规一些学校 考试费用多少 netty服务端为什么会关闭连接 英雄联盟版本服务器关闭连接怎么办 云南昆明学历提升怎么报名? 与服务器连接被关闭怎么办 为什么会出现,版本服务器关闭连接? 云南省有靠谱的学历提升机构吗? 在图片上加文字的是什么软件啊? 英雄联盟版本服务器关闭连接这个问题怎么解决 请问云南省的成人学位英语每年有几次考试?报名时间是几号? 最近大家都在玩的手机上自己的图片可以加上文字的美图软件是什么 出现与服务器连接关闭为什么啊