Netty内置处理器以及编解码器
生活随笔
收集整理的這篇文章主要介紹了
Netty内置处理器以及编解码器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Netty已經為我們提供了常用協議的處理器,我們直接使用就可以
可以看到包括redis協議,http協議等主流協議的編碼解碼器,netty都為我們提供了。
二、代碼測試
- 使用netty直接對redis進行操作
redis協議的詳細規定,這里不深入
@Slf4j public class SimpleRedisProtocol {public static void main(String[] args) {final byte[] LINE = {13, 10};NioEventLoopGroup worker = new NioEventLoopGroup();try {Bootstrap bootstrap = new Bootstrap();bootstrap.channel(NioSocketChannel.class);bootstrap.group(worker);bootstrap.handler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) {ch.pipeline().addLast(new LoggingHandler());ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {@Overridepublic void channelActive(ChannelHandlerContext ctx) {ByteBuf buf = ctx.alloc().buffer();buf.writeBytes("*3".getBytes());buf.writeBytes(LINE);buf.writeBytes("$3".getBytes());buf.writeBytes(LINE);buf.writeBytes("set".getBytes());buf.writeBytes(LINE);buf.writeBytes("$4".getBytes());buf.writeBytes(LINE);buf.writeBytes("name".getBytes());buf.writeBytes(LINE);buf.writeBytes("$8".getBytes());buf.writeBytes(LINE);buf.writeBytes("zhangsan".getBytes());buf.writeBytes(LINE);ctx.writeAndFlush(buf);}@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf = (ByteBuf) msg;System.out.println(buf.toString(Charset.defaultCharset()));}});}});ChannelFuture channelFuture = bootstrap.connect("localhost", 6379).sync();channelFuture.channel().closeFuture().sync();} catch (InterruptedException e) {log.error("client error", e);} finally {worker.shutdownGracefully();}} }
可以看到,接收到了來自redis服務端的響應,提示需要密碼驗證
- http協議測試
可以看到,使用netty可以非常簡單快速的編寫出一個http服務器,這就是netty的魅力啊!
總結
以上是生活随笔為你收集整理的Netty内置处理器以及编解码器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三、Netty的粘包半包问题解决
- 下一篇: 产品经理,讲究的是说学逗唱。