Как получить количество байтов до распределения размера байта массива 'handsize', как показано ниже, когда входящие данные ByteArray отправляются в 3 разных размерах Спасибо.
BufferedInputStream bais = new BufferedInputStream(requestSocket.getInputStream()); DataInputStream datainput = new DataInputStream(bais); //need to read the number of bytes here before proceeding. byte[] handsize = new byte[bytesize]; datainput.readFully(handsize);
Вы можете использовать ByteArrayOutputStream , тогда вам не придется об этом беспокоиться.
ByteArrayOutputStream out = new ByteArrayOutputStream(); //write data to output stream byte[] bytes = out.toByteArray();
Как уже указывалось, проблема, как указано, невозможна. Но зачем тебе это знать? Почему бы не хранить данные в структуре переменного размера, такой как ArrayList, во время чтения? Или, может быть, даже обработать, как вы читаете?
Нет способа узнать, сколько байтов данных еще предстоит получить в сокете - зная, что это равносильно ясновидению.Если вы используете свой собственный протокол для связи клиент / сервер, вы можете отправить число байтов данных в виде целого числа, прежде чем отправлять сами байты.Тогда принимающая сторона будет знать, сколько байтов ожидать.