# TCP server empfängt falsche Werte !?!?



## gutenacht-steph (12. Aug 2010)

Hi,

ich möchte eine Netzwerkverbindung aufbauen. Mittels TCP Server und Client, über Sockets eben.

Ich verschicke von meinem TCP Clienten mit out.writeUTF(..)
(out,das ist mein DataOutputStream) 3 Strings. Diese soll der Server empfangen, und ausgeben. Noch nicht einmal zurücksenden.

Das lustige ist jedoch, wenn der Server den ersten String empfängt, gibt er einen falschen String aus
und bei den restlichen, die ankommen sollten, schmeisst er eine exception java.io.EOFException.

Meine Ausgabe lautet vom Server:

```
run:
Verbindung Nr.1
111
java.io.EOFException
```

Beim Clienten:
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 0 Sekunden)




Meine Klassen:

Mein TCP Server:

```
public class TCPServer {

    public static void main(String args[]){

        int anz=1;

        try{
            ServerSocket ss  = new ServerSocket(7788);
            while(true){
                Socket sverb = ss.accept();
                System.out.println("Verbindung Nr."+anz);
                new ServerThread(sverb,anz).start();
                anz++;
            }
          }
        catch(Exception e){
            System.out.println(e);
        }

    }
```

Mein ServerThread


```
public class ServerThread extends Thread {

    private MonitorRemote mr;
    private Socket sverb;
    private int anz;
    private DataInputStream in;
    private DataOutputStream dout;
    private PrintStream out;

    ServerThread(Socket s, int z) {
        this.sverb = s;
        this.anz = z;
    }

    @Override
    public void run() {
        try {
            in = new DataInputStream(sverb.getInputStream());
            dout = new DataOutputStream(sverb.getOutputStream());
            PrintStream out = new PrintStream(sverb.getOutputStream());
           
            String s = null;
            boolean q = true;
        
            while (q) {
                s = in.readUTF();
                System.out.println(s);
//                if (s.equals("10")) {
//                    login(in);
//                    q = false;
//                }
            }

            sverb.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
```



Mein TCP Client (befindet sich in anderem Projekt, tut aber eigtl. nichts zur Sache):

```
public class TCPClient {

    private String user;
    private String pass;
    private DataInputStream in;
    private DataOutputStream out;
    private Socket clientSocket;

    public TCPClient(String host, int serverPort, String user, String pass) throws IOException {
        
        this.user = user;
        this.pass = pass;

        this.clientSocket =  new Socket(host, serverPort);
        this.in = new DataInputStream(clientSocket.getInputStream());
        this.out = new DataOutputStream(clientSocket.getOutputStream());
    }

    public void setUser(String user) {
        this.user = user;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public void write(String msg) throws IOException{
        out.writeUTF(msg);

    }


    public void login() throws IOException  {

        System.out.println("in login");
        out.writeUTF("10");
        out.writeUTF(user);
        out.writeUTF(pass);

        out.close();
        clientSocket.close();

    }

}
```

Den TCP Client rufe ich von einer anderen Klasse auf.

Meine Client Konsole doch wenigstens die Testausgabe "in login" ausgeben, oder?
Wo liegt mein Problem? Habe ich die 111 übersehen, oder was ist da los? Ich habe wirklich mal als Wert statt 10, eine 111 genommen. Aber die kann doch nicht solange gespeichert werden, oder? 

Habe meinen Computer aus reiner Vorsicht nochmal neu gestartet, falls sich noch irgendwas in meinen Puffern o. ä. befindet.

Wäre super wenn ihr mir helfen könntet.


----------



## Gast2 (12. Aug 2010)

> Aber die kann doch nicht solange gespeichert werden, oder?


Wenn du noch irgendwo nen altes class file liegen hast, ja.


----------



## gutenacht-steph (12. Aug 2010)

unglaublich, das war es.

Habe den Clienten neu kompiliert, dann hat es geklappt. 

Vielen Dank, puh ;-)


----------

