# Echoclient und Server



## siser (20. Apr 2009)

Hi, ich möchte einen Echo Client und Server erstellen. Aber leider funktioniert es nicht so wie es sollte.

Beim Client mach ich folgendes:

```
soc = new Socket(tServer.getText(), 7); // Socket zum Server hin erzeugen
String antwort="";
        try {
            aus = new PrintWriter(soc.getOutputStream()); // Mit PrintWriter in den OutputStream die Nachricht schreiben
            aus.println(tNachricht.getText());
            in = new BufferedReader(new InputStreamReader(soc.getInputStream()));// Antwort von Server empfangen
            while(in.readLine()!=null){
            antwort= in.readLine(); // Antwort dem String antwort zuweisen.
            }
            tAntwort.setText(antwort); //Antwort in der GUI ausgeben.
        } catch (IOException ex) {
        System.err.println(ex);
        }
try {
            soc.close(); //Socket schließen
        } catch (IOException ex) {

        }
```


Beim Server :

```
serversoc= new ServerSocket(7);

        try  {
       while(true) // Endlosschleife
             {
            System.out.println("Warte auf Benutzer auf Port 7...");
            soc = serversoc.accept(); // Ein Socket wird geöffnet, Serversocket bleibt bestehen.
            System.out.println("Verbindung hergestellt");
            ein = new BufferedReader(new InputStreamReader(soc.getInputStream())); // Eingang auslesen
            aus =  new PrintWriter(soc.getOutputStream()); // schreibe einen ausgehenden Stream mit dem Datum
//            while(ein.readLine()!=null)
//            {
               aus.println(ein.readLine());
               
//            } // Eingang in Ausgang schreiben.
            aus.close();
            ein.close();
            soc.close();
            
                
    }

          }
      catch(IOException e)
          {
          serversoc.close();
          System.err.println(e);}
```


----------



## sparrow (20. Apr 2009)

Was genau geht denn nicht?


----------



## musiKk (20. Apr 2009)

Keine Ahnung, was er nicht macht, wie er soll und Fehler suchen wir hier nicht. Aber beim ersten Draufschauen würde ich den Port mal auf >1024 setzen.


----------



## siser (20. Apr 2009)

Habs gerade nochmal getestet und die Serverseite scheint zu funktionieren. Muss als beim Client liegen.
also in dem Part:


```
String antwort="";
       try {
            aus = new PrintWriter(soc.getOutputStream()); // Mit PrintWriter in den OutputStream die Nachricht schreiben
            aus.println(tNachricht.getText());
            in = new BufferedReader(new InputStreamReader(soc.getInputStream()));// Antwort von Server empfangen
           while(in.readLine()!=null){
            antwort= in.readLine(); // Antwort dem String antwort zuweisen.
            }
            tAntwort.setText(antwort); //Antwort in der GUI ausgeben.
        } catch (IOException ex) {
        System.err.println(ex);
        }
```
Es soll halt von Client an den Server eine Nachricht geschickt werden, die dieser zurücksendet und diese zurückgesendete Nachricht soll der Client ausgeben.
nur tut sich bei dem Antwort Textfeld leider nichts.


----------



## Schandro (20. Apr 2009)

```
while(in.readLine()!=null){
            antwort= in.readLine(); // Antwort dem String antwort zuweisen.
            }
```
Bei jedem Aufruf von readLine wird der interne Zeiger des Streams ans ende der aktuell gelesenen "line" gesetzt. Deshalb liest dein code nur jede 2. "line"...


----------



## SvenK (20. Apr 2009)

```
while(in.readLine()!=null){
   antwort= in.readLine(); // Antwort dem String antwort zuweisen.
}
tAntwort.setText(antwort); //Antwort in der GUI ausgeben.
```
Du liest zwar die Zeile aus dem Stream aus, aber da deine GUI-Ausgabe auserhalb der Schleife liegt, wird nie was im Fenster angezeigt (es sei denn readLine() ist gleich null, aber dann ist es eh zu spät)

Edit: und den Post von Schandro beachten


----------



## fjord (20. Apr 2009)

außerdem überschreibst du _antwort_ immer, statt anzuhängen.

@musiKk: echo auf Port 7 macht schon Sinn.


----------



## musiKk (20. Apr 2009)

Ok, stimmt. Soviel zum "ersten Draufschauen"...


----------



## siser (20. Apr 2009)

ok jetzt klappts. danke


----------

