I am just guessing here: Does it return -1?
That's the official description:
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.
You might get -1 (end of stream), but you are still connected, that's way you return back into the loop. "end of stream" means there is no data available - you can still be connected!