Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Netty ByteBuf首次实施_Java_Netty - Fatal编程技术网

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的预期大小,因为这将确保我们以后填充时不需要扩展它