zoukankan      html  css  js  c++  java
  • 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#如何在任务管理器中不显示指定的窗体
    Windows上配置Mask R-CNN及运行示例demo.ipynb
    如何选择普通索引和唯一索引?
    relay(跳板机)搭建
    javascript 9x9乘法口诀表
    canvas画布爆炸
    Chrome Network Timing 解释
    JavaScript中对数组的定义
    jquery each 和 map 区别
    css 兼容性转换网站
  • 原文地址:https://www.cnblogs.com/Desneo/p/7326393.html
Copyright © 2011-2022 走看看