У меня есть socketChannel, настроенный как блокирующий, но при чтении байтовых буферов размером 5 КБ из этого сокета я иногда получаю неполный буфер.
ByteBuffer messageBody = ByteBuffer.allocate(5*1024);
messageBody.mark();
messageBody.order(ByteOrder.BIG_ENDIAN);
int msgByteCount = channel.read(messageBody);
Иногда messageBody заполняется не полностью, и channel.read() возвращает не -1 или исключение, а фактическое количество прочитанных байтов (которое меньше 5k).
Кто-нибудь сталкивался с подобной проблемой?