2016-02-26 3 views
2

Привет так я начал использовать Нетти пару дней назад, но я заметил, что путь я преобразование ByteBuf в строку в каждый раз, когда его использовалиJava Нетти 5 ByteBuf натягивать правильный путь

Есть ли с помощью Лота памяти любой другой способ сделать это без использования большого количества памяти?

Кстати, функция CheckPacket является простой, если содержит строку.

Thx.

ByteBuf byteBuffer=(ByteBuf)msg; 
    byte[] result = new byte[byteBuffer.readableBytes()]; 
    byteBuffer.readBytes(result).retain(); 
    String resultStr = new String(result); 
    if (!resultStr.isEmpty()) { 
     System.out.println(resultStr); 
     CheckPacket(resultStr, client); 
    } 
    byteBuffer.release(); 
    byteBuffer.clear(); 

ответ

0

Этот пример может помочь вам:

 byte[] inputBytes; 
     int offset = 0; 
     int length = input.readableBytes(); 
     if (input.hasArray()) { 
      inputBytes = input.array(); 
      offset = input.arrayOffset() + input.readerIndex(); 
     } else { 
      inputBytes = new byte[length]; 
      input.getBytes(input.readerIndex(), inputBytes); 
     } 

Полный источник here.

0

Вы можете получить помощь от code.openhub.net:

driveableType = ByteBufUtils.readUTF8String(data); 
driveableData = new DriveableData(ByteBufUtils.readTag(data)); 
initType(getDriveableType(), true); 
Смежные вопросы