Netty的深入浅出--1.项目初次尝试

创建好项目(项目采用的是gradle管理器):

Netty的深入浅出--1.项目初次尝试

NioEventLoopGroup(线程组):简单来说就是一个循环;

bossGroup不断接收信息,但是不进行任何处理;

workerGroup对bossGroup接收到的数据进行处理。

其实如果一个线程组也能完成接收然后处理,在返回给前端,但是真正意义上来说,这样并不符合编程规范。所以netty规定使用两个线程组来进行处理。

Netty的深入浅出--1.项目初次尝试

ServerBootstrap:启动服务端的代码

Netty的深入浅出--1.项目初次尝试

Netty的深入浅出--1.项目初次尝试

.group接收两个参数:

Netty的深入浅出--1.项目初次尝试

进行管道处理 :

Netty的深入浅出--1.项目初次尝试

创建管道管道初始化器TestServerInitializer.java 

Netty的深入浅出--1.项目初次尝试

ChannelPipeline在管道中充当连接器角色

Netty的深入浅出--1.项目初次尝试

Netty的深入浅出--1.项目初次尝试

自定义一个自己的处理器:读取客服端发过来的请求,并且处理客户端请求,返回给客户端

Netty的深入浅出--1.项目初次尝试

ByteBuf:将要返回的 数据放入到缓存中,并且自定义好编码格式。

Netty的深入浅出--1.项目初次尝试

返回响应: 

 Netty的深入浅出--1.项目初次尝试

 设置响应头信息:

Netty的深入浅出--1.项目初次尝试

ctx:一定要调用writeAndFlush方法,这个方法是将数据写到缓存中,返回刷新 

Netty的深入浅出--1.项目初次尝试

回到管道处理,将自定义的管道处理器加入到管道中,这是的顺序是,HttpServerCodec()、TestHttpServerHandler():

Netty的深入浅出--1.项目初次尝试

 回到主方法中,将我们定义好的管道处理器集合TestServerInitializer放入到线程组中

Netty的深入浅出--1.项目初次尝试

 绑定端口同步:

Netty的深入浅出--1.项目初次尝试

 关闭缓存流:

Netty的深入浅出--1.项目初次尝试

关闭线程组:

Netty的深入浅出--1.项目初次尝试

解决exceptionCaghut异常:

Netty的深入浅出--1.项目初次尝试

 Netty的深入浅出--1.项目初次尝试

然后去浏览器访问就ok了 

Netty的深入浅出--1.项目初次尝试