Достижение конца потока - это особое состояние. Это происходит не только потому, что читать нечего. Если поток все еще открыт, но читать нечего, он будет «зависать» (или блокироваться), как вы заметили , пока не встретится байт.
Чтобы сделать то, что вы хотите, серверу нужно либо закрыть / завершить поток, либо вам нужно использовать:
while (data.available() > 0) {
..
Когда количество доступных байтов равно нулю, в буфере потока нет ничего для чтения.
С другой стороны, если вы знаете, что для чтения должны быть только два байта, и это конец ваших данных, просто прочитайте два байта и продолжайте (т.е. не используйте цикл while
). Причина использования цикла while
здесь может быть только в том случае, если вы не уверены, сколько всего байтов ожидать.