Netty是一个nio的框架。但是对于新学习的同学来说,netty有点不太好入手。这里写个小demo,实现一个比较简单的netty的服务端和客户端。
Netty 大概有几个模块:
服务端:
1.服务端的接入类。用于创建和接收相应的传入信息。2.handler 用于对请求进行实际处理。
客户端:
1.客户端接入,用于创建接入连接。 2.handler 用于接收服务端的返回内容。
代码如下:
1 import io.netty.bootstrap.ServerBootstrap; 2 import io.netty.channel.ChannelFuture; 3 import io.netty.channel.ChannelInitializer; 4 import io.netty.channel.EventLoopGroup; 5 import io.netty.channel.nio.NioEventLoopGroup; 6 import io.netty.channel.socket.SocketChannel; 7 import io.netty.channel.socket.nio.NioServerSocketChannel; 8 9 public class Server { 10 11 public static void main(String[] args) throws Exception { 12 //1 第一个线程组 是用于接收Client端连接的 13 EventLoopGroup bossGroup = new NioEventLoopGroup(); 14 //2 第二个线程组 是用于实际的业务处理操作的 15 EventLoopGroup workerGroup = new NioEventLoopGroup(); 16 17 //3 创建一个辅助类Bootstrap,就是对我们的Server进行一系列的配置 18 19 ServerBootstrap b = new ServerBootstrap(); 20 //把俩个工作线程组加入进来 21 b.group(bossGroup, workerGroup) 22 //我要指定使用NioServerSocketChannel这种类型的通道 23 .channel(NioServerSocketChannel.class) 24 //一定要使用 childHandler 去绑定具体的 事件处理器 25 .childHandler(new ChannelInitializer<SocketChannel>() { 26 @Override 27 protected void initChannel(SocketChannel sc) throws Exception { 28 sc.pipeline().addLast(new ServerHandler()); 29 } 30 }); 31 32 //绑定指定的端口 进行监听 33 ChannelFuture f = b.bind(8765).sync(); 34 35 //Thread.sleep(1000000); 36 f.channel().closeFuture().sync(); 37 38 bossGroup.shutdownGracefully(); 39 workerGroup.shutdownGracefully(); 40 41 42 43 } 44 45 }