Java Netty ByteBuf首次实施
我的计划是制定如下所述的消息协议:Java Netty ByteBuf首次实施,java,netty,Java,Netty,我的计划是制定如下所述的消息协议: MessageLength:消息总长度的整数 MessageID:具有自动递增标识符的整数 MessageType:带有消息类型的整数(enum) 有效载荷:字节[]以及消息的有效载荷(序列化POJO) 目前,我只是想确保以正确和最佳的方式创建ByteBuf。在这一阶段,我有以下几点: io.netty.buffer.ByteBuf buf = Unpooled.buffer(); // Test Data Class TestData test = n
:消息总长度的整数MessageLength
:具有自动递增标识符的整数MessageID
:带有消息类型的整数(MessageType
)enum
:有效载荷
以及消息的有效载荷(序列化POJO)字节[]
ByteBuf
。在这一阶段,我有以下几点:
io.netty.buffer.ByteBuf buf = Unpooled.buffer();
// Test Data Class
TestData test = new TestData("FirstName", "LastName", 40);
// Convert to Bytes is method to return the Byte Array (Serialised POJO)
byte[] payload = convertToBytes(test);
// Write 1 simulating MessageID 1
buf.writeInt(1);
// Write 2 simulating MessageType of 2
buf.writeInt(2);
// Write The Payload data<BR>
buf.writeBytes(payload);
io.netty.buffer.ByteBuf buf=unmooled.buffer();
//测试数据类
TestData test=新的TestData(“FirstName”,“LastName”,40);
//Convert to Bytes是返回字节数组(序列化POJO)的方法
字节[]有效载荷=转换字节(测试);
//写1模拟消息ID 1
b.书面材料(1);
//写入类型为2的2
b.书面材料(2);
//写入有效负载数据
buf.写入字节(有效载荷);
目标是将它们传递给LengthFieldPrepender
并向上输送
这是创建
ByteBuf
的正确方法吗?或者有更好的方法吗?如果可能,您应该使用分配器创建ByteBuf,因为这可能会给您一个池化ByteBuf(取决于配置)
比如:
Channel channel = ...
channel.alloc().buffer(expectedSize)
还请注意,我传入了ByteBuf的预期大小,因为这将确保我们以后填充时不需要扩展它