Прочитайте данные потока 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);
}