当前位置: 首页 > news >正文

《Netty》从零开始学netty源码(十五)之ServerSocketChannel

NioServerSocketChannel中调用newChannel方法创建java原生的channel,过程如下:

在这里插入图片描述

ServerSocketChannel是一个抽象类,WEPollSelectorProvider调用openServerSocketChannel方法创建的是它的实现类ServerSocketChannelImpl,类结构如下:

在这里插入图片描述

ServerSocketChannel的参数如下:

在这里插入图片描述

当channel调用register方法向Selector注册int代表的类型事件成功后返回SelectionKey,该key会被记录到channel的keys数组,Selector会监控注册的事件类型是否有发生,如有发生会根据key通知channel。

ServerSocketChannel的功能如下:

在这里插入图片描述

channel调用register方法向Selector注册,调用bind方法绑定端口号,调用accept方法接受客户端发来的连接请求并建立连接,调用close方法关闭channel。

NioServerSocketChannel最终调用带provider的构造函数创建ServerSocketChannel,源码如下:
在这里插入图片描述

ServerSocketChannel是java的原生channel,它作为NioServerSocketChannel的channel参数的值,NioServerSocketChannel执行相应的操作时最终会调用其来执行。

http://www.lryc.cn/news/42522.html

相关文章:

  • Java stream性能比较
  • 【数据结构与算法】设计循环队列
  • 最新版!国内IT软件外包公司汇总~
  • MySQL的COUNT语句,竟然都能被面试官虐的这么惨!?
  • 数位DP 详解及其案例实战 [模板+技巧+案例]
  • 并发编程(六)—AbstractExecutorService源码分析
  • 015行为型-职责链模式
  • python例程:五子棋(控制台版)程序
  • leveldb的Compaction线程
  • 邪恶的想法冒出,立马启动python实现美女通通下
  • 蓝桥杯刷题冲刺 | 倒计时18天
  • 经典算法面试题——Java篇-附带赠书活动,评论区随机选取一人赠书
  • 支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了
  • 【C语言进阶】 12. 假期测评①
  • 给程序加个进度条吧,1行Python代码,快速添加~
  • 常见的Keil5编译报错及其原因和解决方法
  • Django 实现瀑布流
  • 传输层协议----UDP/TCP
  • 教你如何快速在Linux中找到某个目录中最大的文件
  • Java二叉树面试题讲解
  • rancher2.6进阶之nfs动态创建pv配置
  • 快速上手vue elementUI好看的登录界面
  • Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】
  • 【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)
  • 深度学习 Day28——利用Pytorch实现好莱坞明星识别
  • Android中使用FCM进行消息推送
  • 从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理
  • Windows环境下实施域名访问的一些小知识
  • 78.qt QCustomPlot介绍
  • win32api之文件系统管理(七)