1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Probleme beim Lesen aus Socket

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Schause, 26.07.2009.

  1. Schause, 26.07.2009 #1
    Schause

    Schause Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    25.07.2009
    Hallo!

    Habe Probleme beim Lesen eines Strings aus einer Socketverbindung, das Programm schmiert einfach ab.
    Schreiben geht jedoch ohne Probleme. Das Android prog ist der Client, das andere ein stinknormaler Echoserver in Java.

    Hier mal der Code:

    Android:
    Code:
    socket = new Socket(ip, port);
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                
    writer.write("test1234");
    writer.newLine();
    String reply = reader.readLine(); //Hier schmiert es ab
    reader.close();
    writer.close();
    socket.close();
    
    und hier der server:
    Code:
    while (true) {
    
        Socket clientSocket = serverSocket.accept();
        BufferedReader in = new BufferedReader(new    InputStreamReader(clientSocket.getInputStream()));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); 
    
        String s = in.readLine();
        out.write(s);
        out.newLine();
        out.close();
        in.close();
        clientSocket.close();
    }
    
    Was mich stutzig macht ist dass es mit einem Client den ich mir in normalem Java geschrieben hab funktioniert, doch das Android Prog stürzt immer ab (bzw. "reagiert nicht"). Der Java Client ist aber exakt gleich geschrieben wie das Android dings.

    Hoffe, ihr könnt mir dabei helfen.

    Lg Schause
     
  2. Lemonbaby, 27.07.2009 #2
    Lemonbaby

    Lemonbaby Neuer Benutzer

    Beiträge:
    17
    Erhaltene Danke:
    0
    Registriert seit:
    13.07.2009
    Du solltest das Problem zunächst etwas genauer lokalisieren.
    Was sagt denn der Stack-Trace Deiner Exception?
     
  3. Schause, 27.07.2009 #3
    Schause

    Schause Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    25.07.2009
    Oh tut mir leid.
    Ja, hab eigentlich alles mit try/catch versehen und es sollte der stacktrace ausgegeben werden.
    Der Server wirft mir ne NullpointerException bei in.readLine(); aber das liegt am Fehler des Android Programms, denn wenn das Android-prog einen Befehl sendet, ohne auf eine Antwort zu warten, gehts.

    Das Android Programm bleibt einfach stecken, dazu muss ich aber sagen dass ich eingefleischter Netbeans-User bin und mich mit dem Debuggen bei Eclipse noch gar nicht gut auskenne (hab mich leider erst einen Tag mit Eclipse eingearbeitet)
    Hab in dem ddms chat log oder wie das heißt nachgesehen, aber da tat sich nix. Und als ich es versucht hab zu debuggen, hab ich nen Breakpoint gesetzt und bin auf debuggen gegangen, aber da ist das Prog einfach normal angelaufen.
    Aber trotzdem sollte ne Exception via alert ausgegeben werden falls eine geworfen wird.... naja aber der Java Client geht ohne Probleme, das is ja das was ich ned verstehe, der is genau gleich geschrieben.

    Naja hoffe dass ich ein bisschen genauer lokalisieren konnte ;-)

    lg schause
     
  4. Lemonbaby, 27.07.2009 #4
    Lemonbaby

    Lemonbaby Neuer Benutzer

    Beiträge:
    17
    Erhaltene Danke:
    0
    Registriert seit:
    13.07.2009
    Du solltest schon mal den StackTrace hier zeigen, sonst kann
    Dir keiner weiterhelfen. java.lang.NullPointerException und nur
    eine einzige Zeile Ausgabe gibt's normalerweise nie. Dafür gibt
    es ja die Ausgabe des ganzen Aufrufbaums...
     
  5. Schause, 30.08.2009 #5
    Schause

    Schause Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    25.07.2009
    Hello
    Sorry war längere zeit nicht im Land ^^
    Habe die Lösung gefunden, wenn man statt einem BufferedWriter einen PrintWriter benutzt, dann gehts.

    Lg
     
    Zuletzt bearbeitet: 30.08.2009
  6. lxorg, 13.09.2009 #6
    lxorg

    lxorg Junior Mitglied

    Beiträge:
    43
    Erhaltene Danke:
    3
    Registriert seit:
    16.07.2009
    Phone:
    HTC Desire
    hast du mal

    Code:
    bufferedWriter.flush();
    vor dem auslesen probiert?
     
  7. Scogit, 13.09.2009 #7
    Scogit

    Scogit Android-Hilfe.de Mitglied

    Beiträge:
    69
    Erhaltene Danke:
    2
    Registriert seit:
    16.08.2009
    Phone:
    Samsung Galaxy
    Also bei ner NullPointerException bei readline würde ich eher vermuten das keine Daten zum lesen auf den Socket vorhanden sind. evl. könnte da folgendes helfen:
    Code:
     do { message.add(in.readLine()); } while (in.ready()); 
     
    Zuletzt bearbeitet: 13.09.2009

Diese Seite empfehlen