首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Windows IOCP检测断开连接(RST/FIN)?

如何使用Windows IOCP检测断开连接(RST/FIN)?
EN

Stack Overflow用户
提问于 2012-06-26 15:41:21
回答 2查看 2.4K关注 0票数 2

如何使用Windows IOCP API确定TCP连接是否被对等方(通过发送RST包或类似方式)断开?具体地说,我不能发送或接收任何数据--没有发生重叠的操作。我只想得到一个异步通知。有没有办法做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-26 21:01:54

您需要有一个读或写挂起来检测连接关闭。任何一个都会像Remy在RST上建议的那样返回,但是对于一个挂起的读取,当远程端关闭其连接的发送端时,您还会得到通知。

我建议你总是保持一个重叠的读挂起,如果你不想占用内存,你总是可以让它成为一个零字节的读。

票数 4
EN

Stack Overflow用户

发布于 2012-06-26 18:51:36

将通知您的IOCP完成处理程序套接字操作是成功还是失败。这些参数告诉您哪种情况是正确的。

如果您使用的是GetQueuedCompletionStatus(),如果出现任何故障,都会返回FALSE。如果是套接字故障,*lpOverlapped将被设置为失败的OVERLAPPED操作的非空指针值。如果GetQueuedCompletionStatus()本身失败,*lpOverlapped将被设置为NULL。如果对等节点正常断开连接,它将返回TRUE并将*lpNumberOfBytes设置为0。

如果您使用的是WSAgetOverlappedResult(),如果出现任何故障,都会返回FALSE。使用WSAGetLastError()确定是否为套接字故障。如果对等节点正常断开连接,它将返回TRUE并将*lpcbTrasfer设置为0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11210995

复制
相关文章
TCP协议之RST与FIN
  如下图所示,FIN表示正常关闭连接,没有数据丢失,缓冲区所有数据包都发送完成才会发送FIN包,这与RST不同。
随心助手
2022/11/30
1.9K0
TCP协议之RST与FIN
动图图解!收到RST,就一定会断开TCP连接吗?
之所以要先铺垫一些原理,还是希望大家能先看些基础的,再慢慢循序渐进,这样有利于建立知识体系。多一点上下文,少一点gap。
小白debug
2022/06/20
2.2K0
动图图解!收到RST,就一定会断开TCP连接吗?
[apue] 使用 poll 检测管道断开
一般使用 poll 检测 socket 或标准输入时,只要指定 POLLIN 标志位,就可以检测是否有数据到达,或者连接断开:
海海
2022/08/19
7870
python实现端口扫描简单几步实现
秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。
公众号---人生代码
2019/07/25
1.2K0
python实现端口扫描简单几步实现
Netty是如何断开连接的?
多路复用器(Selector) 接收到OP_READ事件: 处理OP_READ事件: NioSocketChannel.NioSocketChannelUnsafe.read()
JavaEdge
2021/02/22
2K0
Python | 使用Python3 实现端口扫描
因为后台更新固定链接的缘故,导致前期的原文链接点击没有反应,目前这个问题已经被解决。
TeamsSix
2019/09/24
3.7K0
Python | 使用Python3 实现端口扫描
Windows系统如何连接SVN使用
指定版本库URL,本文示例中直接指定到版本库启动的SVN,svnserve只为svnrepos这一个版本库工作,因此版本库URL格式为svn://服务器IP地址/。
用户1094633
2022/02/15
2.8K0
TCP 异常关闭研究分析
作者:谢代斌 研究测试TCP断开和异常的各种情况,以便于分析网络应用(比如tconnd)断网的原因和场景,帮组分析和定位连接异常掉线的问题,并提供给TCP相关的开发测试人员作为参考。 各个游戏接入都
腾讯云开发者社区
2016/09/28
9.4K1
rabbitMQ连接断开问题
按这样说法,应该还是没有把心跳值给设置好。上面的程序期望是10秒发一次心跳,但是理论上发送心跳的间隔会比10秒多一点。所以艾玛,我应该是把heartbeat_interval的作用搞错了, 它是指超过这个时间间隔不发心跳或不给server任何信息,server就会断开连接, 而不是说pika会按这个间隔来发心跳。 结果我把heartbeat_interval值设置高一点(比实际发送心跳/信息的间隔更长),比如上面设置成60秒,就正常运行了。
周小董
2019/03/25
6.3K0
连接断开的线
前一段参加安图举办的用户大会,其中讲了一个案例:连接断开的线。今天将这个整理下分享给大家。魔板整体截图
数据处理与分析
2019/07/31
2.4K0
连接断开的线
HCNP学习笔记之TCP中FLAGS字段SYN, FIN, ACK, PSH, RST, URG
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 含义: SYN 表示建立连接, FIN 表示关闭连接, ACK 表示响应, PSH 表示有 DATA数据传输, RST 表示连接重置。 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应, 如果只是单个的一个SYN,它表示的只是建立连接。 TCP的几次握手就是通过这样的ACK表现出来
Jetpropelledsnake21
2018/07/04
2.6K0
如何保持Ssh长时间连接不断开
新购入的华为云服务器SSH连接5分钟没有任何操作就自动断开了,该文章主要为了解决该问题,同样的场景适合各种云服务器/本地物理服务器等
cywhat
2022/11/22
4.6K0
如何保持Ssh长时间连接不断开
60秒问答:系统调用之send函数
今天上午 回顾了 TCP/IP编程之select函数详解 ,发现还有问题。进行总结
早起的鸟儿有虫吃
2021/07/22
8120
CS 144 Lab Four -- the TCP connection
Lab Four 对应的PDF: Lab Checkpoint 4: down the stack (the network interface)
大忽悠爱学习
2023/10/11
3090
CS 144 Lab Four -- the TCP connection
我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)
1、TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。 2、客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。 3、TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)
全栈程序员站长
2022/09/05
1.8K0
我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)
实战网络问题排查(六) -- 利用 wireshark 排查 TCP 空窗口问题
上一篇文章中,我们看到了如何通过 wireshark 排查 TCP 重复 ACK 特别是由此引发的快速重发问题:
用户3147702
2022/06/27
6.2K0
实战网络问题排查(六) -- 利用 wireshark 排查 TCP 空窗口问题
2018年9月25日TCP三次握手和四次挥手
其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。
武军超
2019/02/25
3370
2018年9月25日TCP三次握手和四次挥手
从TCP协议的原理来谈谈rst复位攻击
在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。
范蠡
2018/09/29
2.7K0
从TCP协议的原理来谈谈rst复位攻击
mysql使用druid时自动断开连接解决方案
今天接手了一个上了年龄的项目,用的是smm,数据库连接池用的druid,数据库版本较老,是5.0的mysql,我升级成mysql8.0后,一开始还没问题,然后大概每次无连接2分钟后数据库自动断开。。。
阿超
2022/08/16
5.7K0
Wireshark:Nmap扫描分析
如果目标端口开启:首先 kali 向目标发送 [SYN],然后目标返回 [SYN,ACK],kali 再发送 [ACK] 与 [RST,ACK]
yichen
2020/04/15
2.3K0
Wireshark:Nmap扫描分析

相似问题

TCP连接中的FIN与RST

2149

检测套接字关闭的原因: FIN与RST

10

socket通信中的FIN & RST集

20

当远程断开连接时,不发送FIN。

24

原因是什么以及如何避免[FIN,ACK]、[RST]和[RST,ACK]

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文