El caso es que estoy haciendo una aplicación que se conecta a un Servidor FTP, en este caso a uno que he creado con Filezilla Server, y cuando quiero leer todo el contenido del socket hasta que este este vacío, este se queda como esperando en lugar de darse cuenta de que no hay datos. He estado leyendo y parece ser que el readLine() del BufferedReader es bloqueante y bloquea el socket. Quisiera saber que tengo que hacer. Coloco un ejemplo en java de lo que quiero hacer:

Código:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Cliente {
	public static void main(String[] args) {
		try{	
				Socket sControl = new Socket("192.168.1.14", 21);
				System.out.println("Establecida conexión de control.");
				
				PrintStream salidaControl = new PrintStream(sControl.getOutputStream(),true);
				BufferedReader entradaControl = new BufferedReader(new InputStreamReader(sControl.getInputStream()));
				
				System.out.println(entradaControl.readLine());
				
				salidaControl.println("USER yo");
				System.out.println(entradaControl.readLine());
				
				salidaControl.println("PASS 4488");
				System.out.println(entradaControl.readLine());
				
				salidaControl.println("HELP");
				
				String line;
				while(true){
					line = entradaControl.readLine(); //Aquí se queda esperando que le llegue algo para leer
					if(line != null)
						System.out.println(line);
					else
						break;
				}
				
				System.out.println("FUERA");
				
		}catch (IOException e) {
			System.out.println("Error en el cliente");
		}
	}
}
Espero que me puedan ayudar. Un saludo.