Netty —— NIO 编程框架 服务端开发
几个关键的类
EventLoopGroup、NioEventLoopGroup
ServerBootstrap // Netty用于启动NIO服务端的辅助启动类
NioServerSocketChannel // 对应NIO的ServerSocketChannel,一种连接处理方式
ChannelInitializer // 具体I/O处理类初始化配置类
ChannelHandlerAdapter // 具体I/O处理类适配类
简单使用
服务端代码
1、创建两个线程池组
EventLoopGroup bossGroup = new NioEventLoopGroup(2);// 用于服务端接受客户端连接
EventLoopGroup workerGroup = new NioEventLoopGroup(4);// 用于进行SocketChannel的网络读写
2、创建Netty用于启动NIO服务端的辅助类对象
ServerBootstrap b = new ServerBootstrap();
3、NIO服务端启动辅助类对象设置
b.group(bossGroup, workerGroup) // 添加线程组
.channel(NioServerSocketChannel.class) // 对应NIO的ServerSocketChannel
.option(ChannelOption.SO_BACKLOG, 1024) // 配置NIO TCP相关参数
.childHandler(new ChildChannelHandler()); // 绑定I/O实际的处理类
4、绑定端口,同步等待操作完成
ChannelFuture f = b.bind(port).sync(); // 返回的ChannelFuture类似于juc中的Future,用于异步操作的通知回掉
5、等待服务端监听端口关闭,然后将main函数退出
f.channel().closeFuture().sync(); // 同步等待异步回掉关闭通知
6、退出,释放资源
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
如下代码
I/O操作处理类初始化配置类
具体channel I/O操作处理类
服务端启动
网友评论