title: How to identify end of InputStream in java
body: <p>I am trying to read bytes from server using Socket program, ie I am using InputStream to read the bytes. If I pass the length size I am able to read the bytes, but I am not sure what may be the length. So I am not able initialize the byte array.</p>
  
  <p>Also I tried <code>while (in.read() != -1)</code>, I observered it loop works fine when the data is sent, but the next line after the loop is not executable, I feel its still looking for the data in the stream but there is no data. If I close the Server connection, then my client will execute the next line followed to the loop.</p>
  
  <p>I am not sure where I am going wrong?</p>
  
  <pre><code>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");
  </code></pre>
  
  <p>I get the output as:-</p>
  
  <pre><code>,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
  </code></pre>
  
  <p>But no output for :-
  End Of loop</p>
  
  <p>Please guide how shall I close the loop?</p>
  
  <p>Looking forward for you response. Thanking you all in advance.</p>