我正在开发一个使用协议缓冲区作为序列化程序的应用程序。我的应用程序将是服务器的客户端。要求是在发送 protobuf 数据之前,我必须在 protobuf 数据的大小前面加上 4 个字节。我使用 Netty 作为我的套接字库。我使用了 netty 的内置 protocolbuffer 编码器和解码器,但仍然没有得到正确的结果。这是我正在运行的代码:管道代码
public class SmpPipelineFactory implements ChannelPipelineFactory {
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
*
*/
public SmpPipelineFactory() {
}
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline p = pipeline();
// Add Decoders
p.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
//p.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4));
p.addLast("protobufDecoder", new ProtobufDecoder(Pdu.getDefaultInstance()));
// Add encoders
p.addLast("frameEncoder", new ProtobufVarint32LengthFieldPrepender());
//p.addLast("frameEncoder", new LengthFieldPrepender(4));
p.addLast("protobufEncoder", new ProtobufEncoder());
p.addLast("handler", new SmpChannelConnector());
return p;
}
}
任何帮助都会有所帮助 谢谢。