一、最简单的Netty服务端启动
public class NettyServer {
public static void main(String[] args) {
//创建了两个NioEventLoopGroup,这两个对象可以看作传统IO编程模型的两大线程组
//bossGroup表示监听端口,接收新连接的线程组
NioEventLoopGroup bossGroup = new NioEventLoopGroup();
//workerGroup表示处理每一个连接的数据读写的线程组
NioEventLoopGroup workerGroup = new NioEventLoopGroup();
/*
用生活中的例子来讲就是,一个工厂要运作,必然要有一个老板负责从外面接活,然后有很多员工,负责具体干活.
老板就是bossGroup,员工们就是workerGroup,bossGroup接收完连接,交给workerGroup去处理.
*/
//创建了一个引导类ServerBootstrap,这个类将引导服务端的启动工作.
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap
//通过.group(bossGroup,workerGroup)给引导类配置两大线程组,这个引导类的线程模型也就定型了.
.group(bossGroup,workerGroup)
//然后指定服务端的IO模型为NIO
//NioSctpServerChannel.class 这是NIO
//OioServerSocketChannel.class 这是OIO
.channel(NioSctpServerChannel.class)
//调用childHandler()方法,给这个引导类创建一个ChannelInitializer,主要是定义后续每个连接的数据读写
.childHandler(new ChannelInitializer<NioSocketChannel>() {
protected void initChannel(NioSocketChannel ch){
}
});
//调用bind绑定端口,就可以在本地绑定一个8000端口启动服务端
serverBootstrap.bind(8000);
}
}