网站首页 > 技术文章 正文
多路复用器(Selector) 接收到OP_READ事件:
处理OP_READ事件: NioSocketChannel.NioSocketChannelUnsafe.read()
- 接受数据
- 判断接受的数据大小是否<0,如果是,说明是关闭,开始执行关闭:
- 关闭channel(包含cancel多路复用器的key)
- 清理消息:不接受新信息,fail 掉所有queue中消息
- 触发fireChannellnactive和fireChannelUnregistered。
源码
关闭连接,会触发OP_READ 事件:
- 所以在此增加条件断点
- 客户端断开连接时打断点
- 写数据完成了
读取字节数是**-1**代表正常关闭。
- 释放缓存
到了最后,关闭 selection上的 selectionkey,这样selector 上就不会再发生该channel上的各种事件了。
关闭连接的根本 API(JDK 原生)
- Channel的关闭包含了SelectionKey的cancel
如果发送数据的时候,突然把连接关闭掉了,这种不正常的取消连接如何执行的呢?
- 数据读取进行时,强行关闭,会抛IOException
这里捕获
处理 IO 异常
所以正常关闭和异常关闭处理是不同的
原文链接:https://mp.weixin.qq.com/s/K8pQoDGIwMmtj6BnWV-fXg
- 上一篇: 一个后端工程师初学前端
- 下一篇: 来自一个搬运工的自述
猜你喜欢
- 2024-12-05 从交互的角度讲讲弹窗(下)
- 2024-12-05 如何使用弹框,让它弹得「有理有据」?
- 2024-12-05 7个看不见的设计点,产品经理来瞧瞧
- 2024-12-05 接口常用面试题
- 2024-12-05 像素的一生—浏览器渲染流水线简述
- 2024-12-05 你不知道的浏览器渲染原理(图文并茂,深度解读!)
- 2024-12-05 来自一个搬运工的自述
- 2024-12-05 一个后端工程师初学前端
- 2024-12-05 JS 的 六种打断点的方式,你用过几种?
你 发表评论:
欢迎- 最近发表
-
- 用AI做微信小程序的完整步骤_如何用ai制作微信表情包
- 自习室预约的微信小程序设计与实现-计算机毕业设计源码+LW文档
- 微信小程序开发入门指南_微信小程序开发入门教程
- 写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体
- 白描网页版 - 高效准确且免费的OCR文字识别工具
- 字体图形面板与图标字体使用_字体图标的优势和劣势
- 作为前端工程师必须懂得的33个CSS核心概念
- Flutter程序员开发炫酷的登录页面 字体库运用 路由学习 源码分享
- 2025Q3开源字体盘点:让你的代码和文档'颜值'飙升!
- Agent杂谈:Agent的能力上下限及「Agent构建」核心技术栈调研分享~
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)