netty 默認(rèn)支持protobuf 的封裝與解碼,如果通信雙方都使用netty則沒有什么障礙,但如果客戶端是其它語言(C#)則需要自己仿寫與netty一致的方式(解碼+封裝),提前是必須很了解netty是如何進(jìn)行封裝與解碼的。這里主要通過讀源碼主要類ProtobufVarint32FrameDecoder(解碼)+ProtobufVarint32LengthFieldPrepender(封裝) 來解析其原理與實(shí)現(xiàn)。
一,支持protobuf 協(xié)議的默認(rèn)實(shí)現(xiàn)
//配置服務(wù)端NIO線程組 EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try{ ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 1024) .handler(new LoggingHandl