netty 服务端和客户端创建流程
来源:互联网 发布:kali linux 字典 编辑:程序博客网 时间:2024/06/07 02:05
netty 服务端创建的流程
1. ServerBootstrap NIO 服务端启动辅助类,设置各种必要的参数 使用builder模式,解决构造函数参数过多并且不确定问题
2. EventLoopGroup selector 线程池
系统中有两个Reactor线程组
- 服务端用于监听和接收客户端连接的Reactor线程组
- 处理I/O读写的Reactor线程组
- 绑定NioServerSocketChannel 服务端channel
- 设置TCP连接参数
backlog 表示的是未连接队列(当前连接服务器处于SYN_RECV状态)和 已完成连接队列(ESTABLISHED状态) 两个队列总和的最大值 - TCP 链路建立时创建ChannelPipeline()
- 添加并设置ChannelHandler()
启动辅助类和父类分别指定handler,父类的handler作用是工厂类,为每一个客户端创建一个handler
辅助类的作用是所有监听端口的客户端都会执行它。
- 绑定并启动监听端口
- initAndRegister 创建,初始化和NioServerSocketChannel
- 将其注册到Reactor上, 注册方式使用promise,启动异步线程进行注册。
- Selector轮询。 由Reactor线程NioEventLoop负责调度和执行Selector轮询操作,选择准备就绪的Channel集合.
- 执行ChannelPipeline的相应的方法, 最终调度并执行ChannelHandler。
- 执行用户自定义的ChannelHandler
netty 客户端创建的流程
1. Bootstrap实例
2. 创建处理客户端连接、I/O读写的Reactor线程NioEventLoopGroup
3. 创建NioSocketChannel
4. 创建默认的Channel Handler Pipeline, 用于调度和执行网路事件
5. 发起TCP连接, 判断连接是否成功。如果成功,将NioSocketChannel注册到多路复用上,监听读操作位
6. 注册对应的网络监听状态位到多路复用器
7. 多路复用器在I/O现场中轮询各Channel, 处理连接结果。
8. 如果连接成功,设置Future结果, 发送连接成功事件, 触发ChannelPipeline执行
9. 由ChannelPipeline 调度执行系统和用户的ChannelHandler, 执行业务逻辑。
处理超时,在创建NIOSocketChannel的时候,注册一个超时的定时器,如果定时器执行了,说明超时了,关闭链路,再做后续的操作。
如果在定时器执行之前返回了,就删除了定时器
阅读全文
0 0
- netty 服务端和客户端创建流程
- netty 简单服务端和客户端
- Netty初探-netty服务端和客户端demo
- Netty初探-netty服务端和客户端demo
- Netty服务端和客户端搭建(入门)
- Netty实现客户端和服务端的通信
- Netty学习心得 netty服务端和客户端的连接
- Netty创建upd服务端
- 利用Netty进行客户端和服务端交互的入门示例
- 2、NIO客户端和服务端示例代码(netty学习笔记)
- netty 服务端作为客户端跳转请求服务端
- TCP/UDP服务端和客户端创建步骤
- TCP/UDP服务端和客户端创建步骤
- 创建WebService简单服务端和客户端
- Axis创建webservice客户端和服务端
- CXF创建webservice客户端和服务端
- CXF创建webservice客户端和服务端
- CXF创建webservice客户端和服务端
- 十大PHP安全要点
- 多线程互斥之Dekker算法
- 前台实现分页效果
- [二分+二分图匹配]BZOJ 4443: [Scoi2015]小凸玩矩阵 题解
- 常见的数字验证正则表达式整理
- netty 服务端和客户端创建流程
- tomcat日志清理全攻略
- VMWare10+CentOS 6.4下载与安装详解
- 安装与配置Maven(Windows7上)
- 免费而优秀的图表JS插件、js图表、html图表--百度的Echart、Highcharts、阿里的G2、Chart.js
- spring-batch实践篇
- 全面介绍Windows内存管理机制及C++内存分配实例
- Android 智联招聘网站信息获取
- asterisk 自动加载模块