tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von zeja
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
417
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von DeRal
    DeRal DeRal ist offline Rookie
    Registriert seit
    Oct 2010
    Beiträge
    7
    Hi,
    ich soll für die Uni einen POP3-"Sammeldienst" schreiben. Das einsammeln der Mails von den unterschiedlichen Servern klappt auch schon bestens, allerdings funktioniert das Bereitstellen der Mails (die Serverfunktion des Programms) nicht.
    Wenn ich versuche, die Mails mit Thunderbird abzurufen, sprechen Client und Server zwar anfangs miteinander, allerdings geht es nach dem Verbindungsaufbau nicht weiter.
    Im Anhang ist ein Bild wie die Kommunikation läuft. Eigentlich müsste es nach dem "+OK Hi!" mit dem Login - oder zumindest irgendeinem anderen Befehl, vom Client aus - weitergehen.
    Der zuständige Code sieht so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
        public ServerThread(Socket client, Server parent){
            this.client = client;
            DateFormat df = new SimpleDateFormat("dd-MM-yy_hh-mm-ss");
            this.parent = parent;
            System.out.println("ServerThread gestartet für: "+client.toString());
            try {
                readClient = new BufferedReader(new InputStreamReader(client.getInputStream()));
                writeClient = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
                fw = new FileWriter(df.format(new Date())+"_ServerLog.txt");
                logger = new BufferedWriter(fw);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        public void commOut(String text) throws IOException{
            writeClient.write(text);
            writeClient.flush();
            System.out.println(text);
            logger.write(text);
        }
        
        public String commIn() throws IOException{
            String in = readClient.readLine();
            System.out.println(in);
            logger.write(in);
            return in;
        }
        
        @Override
        public void run() {
            // Mails zur Verfügung stellen
            System.out.println("run beginnt");
            while(running){
                try {
                    // Anfrage annehmen
                    commOut("+OK Hi!");
                    String request = commIn();
                    System.out.println(request);
                    String[] commands = request.split(" ");
                    String command = commands[0].toUpperCase();
     
    // Befehle verarbeiten...

    Da Thunderbird ja mit anderen POP3-Servern problemlos kommuniziert, vermute ich das Problem irgendwo im Programm, allerdings hab ich keine Idee wo...
    Hat jemand ne Idee, wo das Problem liegen könnte?
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Java POP3-Server kommuniziert nicht mit Client-nicht_funktionierend.png  
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Hast du mal versucht über die Console mit dem Client zum kommunizieren, statt mit Thunderbird?

    http://www.adamsinfo.com/simple-pop3-communication/

    Was bekommst du denn wenn du nach dem +OK vom Client liest?
    DeRal bedankt sich. 

  3. #3
    Avatar von DeRal
    DeRal DeRal ist offline Rookie
    Registriert seit
    Oct 2010
    Beiträge
    7
    Danke, war sehr hilfreich!
    Der Fehler war eigentlich ganz simpel: Ich habe bei der Antwort des Servers die Zeilenumbrüche vergessen, sodass der Client nie mitbekommen hat, dass er weitermachen kann.
    writeClient.write(text); musste deshalb zu writeClient.write(text+"\r\n"); geändert werden, dann war das Problem gelöst.
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    ... oder besser writeClient.newLine()
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 18.02.10, 08:41
  2. Antworten: 4
    Letzter Beitrag: 08.11.09, 10:55
  3. Swing GUI Client der mit J2EE Application Server kommuniziert
    Von Hubivan im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 4
    Letzter Beitrag: 01.05.08, 13:01
  4. java client-server
    Von asher im Forum Java
    Antworten: 7
    Letzter Beitrag: 12.03.08, 14:54
  5. Antworten: 6
    Letzter Beitrag: 04.05.05, 22:01

Stichworte