这两天在跟踪一个故障,网络部分的,逻辑有点复杂,最后定位到断开一个TCP连接再快速创建一个新的TCP连接(WIndows窗口绑定的网络,主线程中操作)。这个新创建的Socket返回的描述符和刚刚断开的Socket的描述符相同,导致断开的Socket返回的FD_CLOSE消息将新创建的Socket又给关闭了。程序逻辑是和Socket描述符相关的。为了最简单的解决(项目后期),在断开连接后有1S定时器,定时器到了后再创建新的连接(目的是为了等待刚刚关闭的出发的FD_CLOSE消息执行完毕)。FD_CLOSE消息肯定是在TIMER消息之前,所以不会有问题。测试发现如果是有定时器比较难发现新建的和刚刚断开的连接的描述符是相同的,不过和以前的还是有相同的(已经不影响我们的程序逻辑了)。如果马上新连接,在某种情况下还是比较常见的。
新创建的Socket返回的描述符和刚刚断开的Socket的描述符相同
最新推荐文章于 2022-04-07 15:20:04 发布