Socket para cliente pop3

Estou desenvolvendo um cliente para pop 3 , mas estou com um problema ,quando busco um mensagem o programa entra em loop … como eu faço?



    public String  conectar(String host , int porta ){

    //inicializa o socket para comunicar com o servidor
     try{
      s = new Socket(host, porta);
     }catch(Exception e){

         System.out.println("Erro de conexao" + e.getMessage());
     }

     conectado = true;

      //criar os fluxo de saida e entrada de dados
     try{
     in = new BufferedReader(new InputStreamReader(s.getInputStream()));

      out = new PrintWriter(s.getOutputStream(), true);
     }catch(IOException e){
         System.out.println("Erro de conexao" + e.getMessage());
     }

    try{
     return "Resposta do servidor 1 -->  "+ in.readLine()+"\n";
    }catch(IOException e){
     return "Erro ao conectar no servidor ";
    }

    }

    //executar um comando  passado por parametro
    public String executaComando(String comando){

    out.write(comando+"\n");
    out.flush();

    try{
     return "Resposta do servidor -->  "+ in.readLine()+"\n";
    }catch(IOException e){
     return "Erro ao conectar no servidor ";
    }
    }


   


    public String buscaMensagem(int i){

    
        String resposta =this.executaComando("RETR "+i+"\n");   

        String temp=resposta;

      try{
//AQUI ACONTECE O LAÇO
  while((temp=in.readLine()) != null){
   resposta =resposta.concat(temp);
    }
    } catch (IOException ex) {
         // tratar ex  return "Erro na busca da mensagem ";
        }
/*
   
    

*/
    return "mensagem"+i+".html";
    }



    //socket para fazer a coneção com o servidor
    private Socket s;

    //buferr de entrada da dados
    private BufferedReader in;

    //buffer de saida de dados
    private PrintWriter out;

    private boolean conectado=false;

    /**
     * @return the conectado
     */
    public boolean estaConectado() {
        return conectado;
    }

   

}

Obrigado …flw