客户端:
1、创建一个发送请求工作线程组
EventLoopGroup workerGroup = new NioEventLoopGroup();
2、创建客户端启动器
Bootstrap b = new Bootstrap();
3、启动器绑定线程组
b.group(workerGroup)
4、启动器绑定NIO通道
b.channel(NioSocketChannel.class)
5、构建请求发送处理器
b.handler(new ChannelInitializer<SocketChannel>() )
其中:通过pipeline来控制处理器的顺序
ch.pipeline().addLast(new LineBasedFrameDecoder(1024));
ch.pipeline().addLast(new StringDecoder());
执行发送前的数据处理工作:这是一个处理链,类似于责任链模式
6、启动客户端连接发送数据
b.connect(host, port).sync()
7、关闭异步连接
f.channel().closeFuture().sync();
服务端:
1、创建一个接收请求工作线程组
EventLoopGroup serverGroup = new NioEventLoopGroup(1)
2、创建一个处理请求工作线程组
EventLoopGroup workerGroup = new NioEventLoopGroup(10)
3、创建服务端启动器
ServerBootstrap b = new ServerBootstrap()
4、启动器绑定线程组
b.group(serverGroup , workerGroup)
5、启动器绑定NIO通道
b.channel(NioServerSocketChannel.class)
6、构建请求接收处理器
b.handler(new ChannelInitializer<SocketChannel>() )
其中:通过pipeline来控制处理器的顺序
ch.pipeline().addLast(new LineBasedFrameDecoder(1024));
ch.pipeline().addLast(new StringDecoder());
执行接收前的数据处理工作:这是一个处理链,类似于责任链模式
7、异步监听端口接收数据
ChannelFuture f = b.bind(port).sync();
8、关闭异步连接
f.channel().closeFuture().sync();
注意:netty是如何处理网络中的粘包和拆包,数据转换等?答案是 ChannelHandler。
才疏学浅,就总结到这里。