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);
        }
    }
    
  • 相关阅读:
    OpenSSL EVP_Digest系列函数的一个样例
    简单的函数指针使用
    写入简单的日志log
    C实现日志等级控制
    散列表
    数据结构-链表
    关于线程的几个函数
    MySQL什么时候会使用内部临时表?
    linux如何处理多连接请求?
    Centos下搭建nginx反向代理
  • 原文地址:https://www.cnblogs.com/Desneo/p/7326393.html
Copyright © 2011-2022 走看看