Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Java: Problem mit Bytes auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.01.2004
    Ort
    Marbach
    Beiträge
    17

    Java: Problem mit Bytes auslesen

    hallo!
    Das Programm soll eine anfrage an einen Server schicken und - nicht wie hier - das Ergebniss in einen String schreiben (dieser soll von der Methode zurückgeliefert werden, damit er weiter verarbeitet werden kann.
    Außerdem soll die Verbindung nicht geschlossen werden, das Ende der Datei muss an einem "ENDFILE"-Tag erkannt werden.

    String s = AnfrageAnServer + "\r\n\r\n";
    out.write(s.getBytes());
    //Ausgabe lesen und anzeigen
    int len;
    byte b[] = new byte[100];
    while ((len = in.read(b)) != -1) {
    System.out.write(b, 0, len);
    }


    Das bekomme ich aber überhaupt nicht hin, warum weiß ich nicht.
    Ich mache vermutlich nur einen kleinen Fehler, aber ich hab jetzt mal den ursprünglichen Quelltext gepostet da es an ihm vermutlich am einfachsten geht.
    Ich kann wenn nötig aber auch meinen Code posten, nur tut der eben überhaupt net

    TIA,
    Tyset
    Geändert von Tyset (08-03-2004 um 18:11 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Was geht net?

    Hmm, soweit kann ich keinen fehler erkennen. Es ist aber halt nur das Codestück, welches die Daten vom Stream lest. Bist du sicher dass der Socket verbunden ist und außerdem die Streams geöffnet sind.

    Das hat mich auch lange gehändelt, es gibt da ne Daumenregel, die eigentlich immer funktioniert.
    zuerst getOutputStream und dann erst getInputStream
    Geändert von Lin728 (19-08-2017 um 21:13 Uhr)

  3. #3
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Ich hab auch mal was mit Sockets und Clients rumgebastelt - hat leider überhaupt nicht funktioniert. Es lag wohl an den dürftigen Tuts im Internet, man muss sich dafür wohl ein gutes Buch suchen...

    Ich hatte folgendes Problem: Ich konnte entweder Senden, oder empfangen, aber nie beides zusammen Macht noch so Sinn.

    Ich täte mit

    Code:
    System.out.println("irgendeinstring");
    jede Mengen Ausgaben machen, dann kannst du sehen, wo etwas nicht läuft. Anstatt einen String auszugeben kannst du auch mal versuchen, einen Socket oder einen Client auszugeben - das läuft oftmals auch! (Und das wissen viele nicht...)

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von bischi
    Anstatt einen String auszugeben kannst du auch mal versuchen, einen Socket oder einen Client auszugeben
    *ROFL* der ist gut. Druck mir mal nen Client

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    13.01.2004
    Ort
    Marbach
    Beiträge
    17
    ok ich hab das Problem jetzt im Griff.
    es scheint zumindest so.

    Hier der Code damit es andere mal einfacher haben:

    String returned = new String();
    String s = input;
    out.write(s.getBytes());
    //Ausgabe lesen und anzeigen
    boolean endFound = false;

    while(!endFound)
    {
    byte[] b = new byte[1024];
    int len = in.read(b);
    String zwischen = new String(b);
    returned = returned + zwischen;

    zwischen = null; // Variable löschen

    if(returned.endsWith("ENDFILE"))
    {
    endFound = true;
    }
    }

  6. #6
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Naja...

    Öhm, naja...

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Codetags verwenden - ansonsten schliesse ich mich Ceisserer an.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Registrierter Benutzer
    Registriert seit
    13.01.2004
    Ort
    Marbach
    Beiträge
    17

    Re: Naja...

    Original geschrieben von ceisserer
    Öhm, naja...
    darf ich um Erklärung bitten?
    Ist der Code sch*** oder was? Ich bin net besonders gut ich lerne Java erst...

  9. #9
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Code:
    String returned = new String();  
    out.write(input.getBytes());
    
    byte[] b = new byte[1024];
    
    while (!returned.endsWith("ENDFILE"))  {
      in.read(b)
      returned += new String(b);
    }
    Ungetestet und schnell und so hingeklepft täte imho etwa dasselbe.

    Du machst sehr viele Variablen etc. die die Lesbarkeit beeinträchtigen aber nix zur Funktionalität beitragen respektive überflüssig sind.
    Das macht die Sache auch für dich schwieriger.

    Paradebeispiel:
    Code:
     int len = in.read(b);
    len wird zwar erstellt, aber nachher gar nie verwendet
    Genau so überflüssig ist hier "String zwischen;"

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn man einen String zusammenbaut, benutzt man besser einen StringBuffer als Stringkonkatenation, weil das um einiges Performanter ist und keine Stringinstanzen übriglässt, die der GC dann erst wieder freigeben muss.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #11
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ups. Stimmt natürlich.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  12. #12
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182
    ....................
    Geändert von Lin728 (19-08-2017 um 21:14 Uhr)

  13. #13
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549

    *haare ausreiss*

    ogott

    ceisserer benutzt weder Code-Tags noch rückt er den Code ein

    Kein Wunder kriegt er da Probleme mit meiner Klammertechnick
    Der Unterschied ist aber wirklich null

    MfG Peschmä

    P.S. compiler error: Missing closing bracket on line 7
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  14. #14
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Hehe


  15. #15
    Registrierter Benutzer
    Registriert seit
    13.01.2004
    Ort
    Marbach
    Beiträge
    17
    ja ich lern ja erst.... aber danke...
    wird schon noch werden

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •