MMO+Java:一、Java服务器相关基础知识:4、基于Netty的TCP服务器开发

tech2022-08-22  130

一、Netty 的启动与管道初始化工厂

(1)导入netty的依赖包

代码结构图:

所有的代码可以在git上获取。地址:https://github.com/tudouANDdigua/UnityJavaServer.git

(2)netty启动

配置group(监听工作组,IO工作组)配置channel():采用NIO: NioServerSocketChannel配置最多可同时接入的连接请求数目 option(ChannelOption.SO_BACKLOG, 1024) 配置Channel的初始化工厂 IO 事件处理对象(连接进来,连接断开,有数据可读, 连接异常) 数据编码解码器绑定服务器端口开启监听。注意:端口不要被占用

(3)连接测试

接入连接 客户端会发起连接, netty会建立建立 调用初始化工厂里面一个initChannel方法,来初始化配置新建立的channel 调用IO Event对象channelActive 用户接入进来了接收数据 1:当连接建立以后,channel建立好以后,我们的客户端发送数据过来,channel就会拿到数据 2: netty就会去找配置channel时候解码器对象,StringDecoder 3:netty就会遍历list out, 通知管道的ioEvent处理对象,调用这个对象的 我们就收到了某个客户端给我们发送的message接收数据 发送数据 WriteAndFlush 1:写入一个对象给channel 2: channel 找管道里面的配置的编码对象 StringEncoder 3:调用编码器的编码函数,来将object对象—》二进制数据 4:底层给你发出去连接断开 1: 管道会被中断,通知管道的IO Event处理对象,调用它的固定的函数 2: 通知IO Event 这个管道不可用了 客户端代码我采用node来写,node安装 node.js中文网 下载对应的就可以了

二、为什么Netty可以做到高并发

(1) 多线程监听接入socket

(2)多线程处理IO

(3)注意:不要阻塞netty 的IO线程,处理业务逻辑,尽量调用别的线程

三、Netty结构图详解

最新回复(0)