А>Почему бред? Размер буфера у меня зависит от размера поступившего соообщения readBuffer = new byte[inputStream.available()] и за один цикл я считываю его полностью.
А зачем тогда while?
А>Тем более я знаю точно, что мне должно поступить на вход, в зависимости от того какой запрос я отправил.
Не забудь убедиться, что драйвер тоже точно знает, что ты ждёшь на входе, и не пришлёт данные в два приёма.