• 10


    方法 职责
    writeInbound(Object... msgs) 将入站消息写入到EmbeddedChannel中
    readInbound() 从EmbeddedChannel中读取一个入站消息,任何返回的消息都穿过了整个ChannelPipeLine
    writeOutbound(Object... msgs) 将出站消息写入到EmbeddedChannel中
    readOutbound() 从EmbeddedChannel中读取一个出站消息,任何返回的消息都穿过了整个ChannelPipeLine

    10.1 示例

    //测试结果
    Received message:0
    Received Finished!
    Received message:1
    Received Finished!
    Received message:2
    Received Finished!
    embeddedChannel readInbound:0
    embeddedChannel readInbound:1
    embeddedChannel readInbound:2
    
    public class EmBeddedChannelTest {
        public static void main(String[] args) {
            ByteBuf byteBuf = Unpooled.buffer();
            for (int i = 0; i < 3; i++) {
                byteBuf.writeInt(i);
            }
    
            EmbeddedChannel embeddedChannel = new EmbeddedChannel();
    		
    		//获取channelPipeLine
            ChannelPipeline channelPipeline = embeddedChannel.pipeline();
            channelPipeline.addLast(new SimpleChannelInBoundHandlerTest());
            channelPipeline.addFirst(new DecodeTest());
    
    		//写入测试数据
            embeddedChannel.writeInbound(byteBuf);
    		
            System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
            System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
            System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
    
        }
    
    }
    
    //解码器
    class DecodeTest extends ByteToMessageDecoder {
        @Override
        protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
            if( in.readableBytes()>=4 ){
                out.add(in.readInt());
            }
        }
    }
    
    //channelHandler
    class  SimpleChannelInBoundHandlerTest extends SimpleChannelInboundHandler {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
            System.out.println("Received message:"+msg);
            System.out.println("Received Finished!");
            ctx.fireChannelRead(msg);
        }
    }
    
  • 相关阅读:
    C# 编码约定
    SQL 合并多列为一行字符串
    Flex 粒子效果
    安装flashplayer 提示 "您尝试安装的 Adobe Flash Player" 版本不是最新版本. 请访问 Player 下载中心 获取最新、最安全版本"的解决方法
    Flex Builder 好用的插件
    【默认】博客正式开通
    Vulkanished2021重要内容简介
    论文读书笔记8
    论文读书笔记5
    论文读书笔记2
  • 原文地址:https://www.cnblogs.com/Desneo/p/7326393.html
Copyright © 2020-2023  润新知