in.read(answerHeader) - возвращает кол-во прочитанных байт, не стоит закладываться на то что прочитано будет всегда столько сколько вы ожидаете (чаще будет наоборот).
не игнорируйте предупреждения idea :)
если хотите заблокироваться пока не получите нужное количество байт то используйте readNBytes (с java 11).
// read to EOF which may read more or less than buffer size
while ((n = read(buf, nread, Math.min(buf.length - nread, remaining))) > 0) {
nread += n;
remaining -= n;
}