Come identificare la fine di InputStream in java

Sto cercando di leggere i byte dal server usando il programma Socket, cioè sto usando InputStream per leggere i byte. Se passo la lunghezza, sono in grado di leggere i byte, ma non sono sicuro di quale possa essere la lunghezza. Quindi non sono in grado di inizializzare l’array di byte.

Ho anche provato while (in.read() != -1) , ho osservato che il ciclo funziona bene quando i dati vengono inviati, ma la riga successiva dopo il ciclo non è eseguibile, sento che sta ancora cercando i dati nello stream ma non ci sono dati. Se chiudo la connessione al server, il mio client eseguirà la riga successiva seguita dal ciclo.

Non sono sicuro di dove sto andando male?

 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"); 

Ottengo l’output come: –

 ,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 

Ma nessun output per: – End Of loop

Per favore guida come devo chiudere il cappio?

In attesa di una risposta. Ringraziando tutti voi in anticipo.