Cómo identificar el final de InputStream en java

Estoy intentando leer bytes del servidor usando el programa Socket, es decir, estoy usando InputStream para leer los bytes. Si paso el tamaño de longitud, puedo leer los bytes, pero no estoy seguro de cuál puede ser la longitud. Por lo tanto, no puedo inicializar la matriz de bytes.

También intentéwhile (in.read() != -1), Observé que el bucle funciona bien cuando se envían los datos, pero la siguiente línea después del bucle no es ejecutable, siento que todavía está buscando los datos en la secuencia pero no hay datos. Si cierro la conexión del servidor, mi cliente ejecutará la siguiente línea seguida del bucle.

¿No estoy seguro de a dónde me estoy equivocando?

this.in = socket.getInputStream();

int dataInt = this.in.read();

while(dataInt != -1){
    System.out.print(","+i+"--"+dataInt);
    i++;
    dataInt = this.in.read();
}

System.out.print("End Of loop");

Obtengo el resultado como: -

,1--0,2--62,3--96,4--131,5--142,6--1,7--133,8--2,9--16,10--48,11--56,12--1,13--0,14--14,15--128,16--0,17--0,18--0,19--48,20--0,21--0,22--0,23--0,24--0,25--1,26--0,27--0,28--38,29--114,30--23,31--20,32--70,33--3,34--20,35--1,36--133,37--48,38--51,39--49,40--52,41--49,42--55,43--49,44--52,45--52,46--54,47--55,48--50,49--51,50--52,51--48,52--53,53--56,54--51,55--48,56--48,57--57,58--57,59--57,60--57,61--57,62--57,63--57,64--56

Pero no hay salida para: - Fin del bucle

Por favor, guía, ¿cómo debo cerrar el ciclo?

Esperando su respuesta. Gracias a todos de antemano.

Respuestas a la pregunta(7)

Su respuesta a la pregunta