# Bytes aus Stream lesen



## Mentor49 (23. Dez 2008)

Hey,
ich programmiere zurzeit an einem Chat.
Da das ganze sicher werden soll, will ich den Datenaustausch zwischen Client und Stream zB mit einem passwordhash verschlüsseln.
Das ist aber nicht mein Problem (;
Mein Problem ist folgendes:

1. Client soll eine Eingabe machen, also einen String der geschickt werden soll. (Sagen wir, er gibt "hallo" ein.)
2. Der String wird in Bytes umgewandelt und mit dem Passwordhash verschlüsselt.
3. Nun sollen diese Bytes zum Server geschickt werden.
4. Der Server merkt dass Daten reinkommen und speichert die Bytes.
5. Die Bytes werden nun entschlüsselt und zum String umgewandelt.

Mein Problem ist eigentlich Punkt 4.
Ich möchte einfach nur genau die Bytes, die vom Client verschickt wurden, in einem Byte Array auf der Serverseite gespeichert werden und dann folgen die weiteren Schritte.
Nur bei meinen Versuchen kommen immer die Bytes 13 und 10 dazwischen die ich aber nicht mitgeschickt hab ^^
Wobei...ich merk grad dass ich als Client immer "telnet" in der Terminal benutze, vielleicht schickt der ja die Bytes 10 und 13 mit.
Nunja, wie speichert man denn nun alle Bytes einer "Nachricht" vom Client in einem ByteArray?

Lg Chris


----------



## musiKk (24. Dez 2008)

10 13 ist \n\r für den Zeilenumbruch unter Windows.

Für die andere Frage ist sicher Code vonnöten.


----------



## Mentor49 (24. Dez 2008)

Nunja, ich hab halt nen BufferedReader namens "in" und ein ByteArray mit dem Namen "data".

Ich möchte eine Funktion haben, welche auf das nächste Paket (Also auf die nächste Nachricht) vom Client wartet, die gesendeten Bytes in "data" einließt, diese decodiert, dann halt jeden Byte als Char umwandelt und als String zurückgibt.

Das Problem ist einfach, zu warten bis ein Paket da ist, und all die Bytes in ein Bytearray zu packen.

Ich könnte es so machen:


```
static String getdata()
{
byte[] data = new byte[64];
in.read(data);
data = decodieren(data);
...(Umwandlung zum String usw)
return messagestring;
}
```
Nur sind die Pakete nicht immer 64 Bytes lang, und ich hab kein Bock unnötig Buffer zu haben und die mit Nullen vollzustopfen :\

Wahrscheinlich sehe ich iwo den Wald vor lauter Bäumen nicht...
Also n' simpler Code dafür wäre wohl ganz hilfreich 

Lg


----------



## Mentor49 (24. Dez 2008)

Stand tatsächlich aufm Schlauch ^^

Habs nun mit

```
String line = in.readLine();
byte[] data = line.getBytes();
```
gelöst.

Frohe Weihnachten euch allen (;


----------

