Как получить количество байтов? - PullRequest
0 голосов
/ 23 марта 2010

Как получить количество байтов до распределения размера байта массива '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); 

Ответы [ 3 ]

3 голосов
/ 23 марта 2010

Вы можете использовать ByteArrayOutputStream , тогда вам не придется об этом беспокоиться.

ByteArrayOutputStream out = new ByteArrayOutputStream();
//write data to output stream
byte[] bytes = out.toByteArray();
0 голосов
/ 23 марта 2010

Как уже указывалось, проблема, как указано, невозможна. Но зачем тебе это знать? Почему бы не хранить данные в структуре переменного размера, такой как ArrayList, во время чтения? Или, может быть, даже обработать, как вы читаете?

0 голосов
/ 23 марта 2010

Нет способа узнать, сколько байтов данных еще предстоит получить в сокете - зная, что это равносильно ясновидению.Если вы используете свой собственный протокол для связи клиент / сервер, вы можете отправить число байтов данных в виде целого числа, прежде чем отправлять сами байты.Тогда принимающая сторона будет знать, сколько байтов ожидать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...