# DataInputStream.readInt(Unknown Source)



## DEG1935 (23. Apr 2008)

Hallo Zusammen,

ich habe ein Problem mit DataInputStream. Ich würde gerne einen Telegrammverkehr zwischen Client und Server realisieren. Gefunden habe ich dafür die Klasse Data(Input/Output)Stream.

Sendercode:

```
Socket sock = new Socket(args[0], 1055);
InputStream in = sock.getInputStream();
OutputStream out = sock.getOutputStream();
sock.setSoTimeout(3000);
int telNr=1;
int laenge=2;

DataOutputStream dos = new DataOutputStream(out);
try {
    dos.write(telNr);
    System.out.println("Telegrammnummer="+telNr);
    dos.write(laenge);
} catch (IOException e) {
    e.printStackTrace();
}
```

Empfängercode:

```
ServerSocket srv = new ServerSocket(1055);
while (true) {
    Socket client = srv.accept();
    try {
        InputStream in = client.getInputStream();
        DataInputStream dis = new DataInputStream(in);
        int telNr = dis.readInt();
        int laenge = dis.readInt();
        System.out.println("Telegrammnummer=" + telNr 
                                    + " / Laenge=" + laenge);
        client.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
```


dis.readInt() verursacht bei Ausführung eine Fehlermeldung: Unknown Source.

Könnt ihr mir einen Hinweis geben, was ich falsch mache, bzw. wo mein Denkfehler liegt?


----------



## SlaterB (23. Apr 2008)

mit 
dos.write(telNr); 
schreibst du nur ein Byte,
während 
dis.readInt(); 
einen int, also 4 Bytes liest,

da nur 2 Bytes maximal drin sind, geht das nicht gut,

--------


```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Runnable r = new Runnable()
            {
                public void run()
                {
                    try
                    {
                        ServerSocket srv = new ServerSocket(1055);
                        while (true)
                        {
                            Socket client = srv.accept();

                            InputStream in = client.getInputStream();
                            DataInputStream dis = new DataInputStream(in);
                            int telNr = dis.readInt();
                            int laenge = dis.readInt();
                            System.out.println("Telegrammnummer=" + telNr + " / Laenge=" + laenge);
                            client.close();
                        }
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            };
        new Thread(r).start();

        Thread.sleep(300);
        Socket sock = new Socket("localhost", 1055);
        InputStream in = sock.getInputStream();
        OutputStream out = sock.getOutputStream();
        sock.setSoTimeout(3000);
        int telNr = 1;
        int laenge = 2;

        DataOutputStream dos = new DataOutputStream(out);
        dos.writeInt(telNr);
        System.out.println("Telegrammnummer=" + telNr);
        dos.writeInt(laenge);
        dos.flush();
        dos.close();
    }

}
```


----------



## DEG1935 (23. Apr 2008)

Super, danke! Ich habe vor lauter Bäumen den Wald nicht gesehen! Natürlich wollte ich nicht die Methode write benutzen, sondern writeInt(int)! Kaum macht man es richtig schon funktioniert es! Danke!


----------

