Avatar billede etech2k Nybegynder
02. august 2007 - 11:59

BufferedReader.readLine() hænger

Jeg har lavet en klasee til at hente mine mails via pop3.
Men metoden receive() hænger da BufferedReader.readline() ser ud som om at den bare hænger.

------------------------------------
package Mail;
import java.util.*;
import java.io.*;
import java.net.*;
import Logic.Setting;
/**
* <p>Title: ZedCash Proxy Checker</p>
*
* <p>Description: Inbox Proxy Checker</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: ZedCash</p>
*
* @author Schaumann
* @version 0.1a
*/
public class POP3 {
  private String host;
  private String user;
  private String pass;
  private int port;
  private boolean delete;
  private PrintWriter out;
  private BufferedReader in;
  private Socket socket;
 
  public POP3(String _host,String _user, String _pass,int _port,boolean _deleteEmail){
    this.host = _host;
    this.user = _user;
    this.pass = _pass;
    this.port = _port;
    this.delete = _deleteEmail;
  }
 
  public boolean connect(){
    boolean connected = false;
    try {
      socket = new Socket(host, port);
      out = new PrintWriter(socket.getOutputStream());
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));   
      connected = socket.isConnected();
    }
    catch (UnknownHostException ex) {
      return connected;
    }
    catch (IOException ex) {
      return connected;
    }
    return connected;
  }
 
  public boolean login(){
    boolean isLoggedIn = false;
    receive();
    send("user "+user);
    receive();
    send("pass "+pass);
    receive();
    send("STAT");
    if(receive().contains((CharSequence)"OK"))
      isLoggedIn = true;
    return isLoggedIn;
  }
 
  public ArrayList downloadEmails(){
    ArrayList emails = new ArrayList();
    send("LIST");
    receive();
    return emails;
  }
 
 
 
  private void send(String cmd){
    if(Setting.getDebug())
      System.out.println("SENT > "+cmd);
    out.print(cmd);
    out.print("\r\n");
    out.flush();
  }

  private String receive(){
    String s = null;
    try {
      String line = null;
      while( (line = in.readLine() ) !=null ) {
        s = s + line;
      }
    }
    catch (IOException ex) {
      if(Setting.getDebug())
        System.out.println(ex.toString());
      return ex.toString();
    }
    if(Setting.getDebug())
      System.out.println("RECEIVE < "+s);
    return s;
  } 
 
  public void endSession(){
    send("QUIT");
    receive();
  }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester