Прочитайте данные потока Socket и прочитайте первые 2 байта, найдите остаток от длины сообщения

Как прочитать первые 2 байта из входного потока и преобразовать 2 байтовые данные в фактическое значение длины int, затем прочитать и скопировать оставшуюся часть сообщения в байтовый массив. Остальная часть массива данных должна быть определена после чтения первых 2 байтов из потока, кто-нибудь знает эффективную логику?

2 ответа

Решение

Использовать DataInputStream. Использовать readUnsignedShort() метод, чтобы вернуть слово длины, затем readFully() Способ чтения следующих данных.

Это создает строку из байтового массива. Адаптируйте по мере необходимости.

InputStream in;
try {
    in = socket.getInputStream();
    DataInputStream dis = new DataInputStream(in);

    int len = dis.readInt();
    byte[] data = new byte[len];
    if (len > 0) {
       dis.readFully(data);
    }           
    String sReturn = new String(data); 
}
Другие вопросы по тегам