В моем приложении клиенты отправляет файл на сервер в этом формате,Как проверить Integer полученные из потока сокета в Java
4 bytes of file length + actual file content
Так сервер читает первые 4 байта, чтобы получить длину сообщения и то он читает до этой длины сообщения.
Серверный код будет выглядеть следующим образом,
ByteArrayOutputStream lengthBuf = new ByteArrayOutputStream(4);
byte[] output = new byte[4];
//Reading first 4 bytes from InputStream
int readLength = inputStream.read(output);
lengthBuf.write(outpu, 0, readLength);
//Converting to integer
int length = ByteBuffer.wrap(lengthBuf.toByteArray()).getInt();
Он отлично работает для действительных случаев. Но в случае, если клиент не может добавить длину в первые 4 байта, тогда эта длина получила некоторое нежелательное значение (1481988969). Как проверить, что первые 4 байта данных являются действительным целым числом?
У вас проверено output.getInt(); извлекает первые четыре? – danielad
Что делать, если inputStream.read() читает меньше 4 байтов? Что произойдет, если утверждение неверно? –
BTW 'Integer'! =' Int' –