Sockets: BufferedReader readLine() blocks
I am using BufferedReader.readLine() method to read a response from a remote server (which is written in C and I have no access to source code). BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line; while((line = br.readLine())!=null){ [...] } But it always blocks at the last line until it times out. So I used the following code: int b; while(true){ b = in.read; [...] } and I found out that the last byte read has an integer value of 13, which I think it is a carriage return, right? So why the readLine method blocks? How does the server usually signal an end of stream