Я разрабатываю приложение, которое использует буфер протокола в качестве сериализатора. Мое приложение будет клиентом для сервера. Требование состоит в том, что перед отправкой данных protobuf я должен добавить к размеру данных protobuf 4 байта. Я использую Netty в качестве моей библиотеки сокетов. Я использовал встроенный кодировщик и декодер протокольного буфера netty, но я все еще не получаю правильного результата. Это код, который я запускаю: Код конвейера
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;
}
}
Любая помощь поможет Спасибо.