Как говорит Джон, вы знаете, что это конец файла, потому что он вернет 0 байтов. Однако вы также должны учитывать различные исключения, которые могут быть выброшены. Поскольку сеть по своей природе ненадежна, некоторые исключения всегда будут возможны.
Например, если поток отключен (в отличие от другой стороны, просто закрывающей сокет), то вы можете получить исключение IOException
. Всегда переносите вызовы ввода-вывода в обработчики исключений, если только вы не уверены, что они не могут вызвать исключение.