protobuf编解码内置方案
解码工具类
:ProtobufDecoder+ProtobufVarint32FrameDecoder
编码工具类
:ProtobufEncoder+ProtobufVarint32LengthFieldPrepender
- 原理
- 代码:
1.user.proto
syntax="proto2";
package netty.protobuf;
option java_package="netty.protobuf";
option java_outer_classname="UserInfo";
message User{
required string name =1;
required int64 userId =2;
optional string email=3;
optional string mobile=4;
optional string remark=5;
}
编译生成UserInfo,复制进工程项目即可
2.ProtobufServer
/**
* @author pdc
*/
public class ProtobufServer {
public void bind(int port) throws Exception {
//配置服务端的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, 100)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>