BufferReader

Pessoal,

Estou com uma dúvida sobre o BufferReader e espero que alguém possa me ajudar. Seguinte, terminei uma aplicação cliente servidor. Na aplicação o cliente faz uma verificação no servidor. Esse por sua vez retorna, via Stream, para o cliente um valor Boolean. Até ai tudo blz. Bom, assim que o cliente recebe essa informação, estou recebendo assim:

                        if(this.socket == null){
				this.socket = new Socket(this.getConfiguracao().getDnsPortal(), this.NUM_PORTA); 	
			}
			
			OutputStream out = this.socket.getOutputStream();
			out.write(("VER\n").getBytes());
			out.write((nomeMaquina + versao + "\n").getBytes());
			
			Thread.sleep(5 * 1000);
			
			InputStream in = this.socket.getInputStream();
			BufferedReader reader = new BufferedReader(new inputStream (in));
                        if(reader.ready()){
			  return Boolean.parseBoolean(reader.readLine());	
                        }

Assim que o cliente recebe a informação, o stream é carregado em um buffer e depois é testado se o buffer está pronto. Ai é que está o problema. Quando é feito:
if(reader.ready()), essa validação sempre retorna false, sendo que o server retornou TRUE para o cliente. Para resolver isso, o que eu fiz foi retirar o reader.ready() e testar apenas o reader.readLine, o qual me imprime a resposta do servidor, que é TRUE. A minha dúvida é: é realmente certo utilizar o .ready() nesse caso ou se eu não utilizar não vai ter nenhum problema? Quando é que vocês custumam utilizar essa funcionalidade do bufferedReader.

Aguardo resposta

O método ready() serve para testar se existem dados no buffer para serem lidos. Em outras palavras, ele retorna true se é garantido que a próxima leitura não causará um bloqueio na thread que está lendo o stream. Resumindo, você somente vai usar esse método se você precisar lidar com bloqueios. Só pra tirar uma dúvida, pra que serve aquele Thread.sleep na linha 9 ?

entendi…obrigado rmendes08.
A Thread.sleep, serve para o cliente dormir e esperar a resposta do servidor, pois estava ocorrendo uma quebra de comunicação.