Book.proto
syntax = "proto3";
option java_outer_classname = "BookMessage";
message Book{
int32 id = 1;
string name = 2;
}
生成代码命令
protoc Book.proto --java_out=./
NettyServerHandler
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
BookMessage.Book book = (BookMessage.Book) msg;
System.out.println("客户端发来的数据:" + book.getName());
}
NettyProtoBufServer
ChannelPipeline pipeline = sc.pipeline();
pipeline.addLast("decoder", new ProtobufDecoder(
BookMessage.Book.getDefaultInstance()));
pipeline.addLast(new NettyServerHandler());
NettyClientHandler
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
System.out.println("Client:" + ctx);
BookMessage.Book book = BookMessage.Book.newBuilder()
.setId(1).setName("netty从入门到精通").build();
ctx.writeAndFlush(book);
}
NettyProtoBufClient
ChannelPipeline pipeline = sc.pipeline();
pipeline.addLast("encoder", new ProtobufEncoder());
pipeline.addLast(new NettyClientHandler());
网友评论