# Bezeichner "end of line" für die Funktion readline



## Trivium6 (13. Aug 2010)

Hallo zusammen,

ich schreibe gerade einen TCP Server, der Strings von einer Smart Camera empfangen soll bzw dass auch schon tut. Die Code zum Empfangen sieht folgendermaßen aus:


```
server = new ServerSocket(11111);
socket = server.accept();
BufferedReader inCam1 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(inCam1.readLine());
```

Leider beleibt das Programm bei der letzten Zeile stehen. 

Wenn ich die Ausgabe folgendermaßen programmiere, funktioniert die ganze Geschichte wunderbar:


```
server = new ServerSocket(11111);
socket = server.accept();
BufferedReader inCam1 = new BufferedReader(new InputStreamReader(socket.getInputStream()));

char[] test = new char[8];
inCam1.read(test);
```
 
Ich habe den Strings, die von der Kamera gesendet werden, Suffixe wie \n, \r\n\ oder auch $ angehängt, damit sie von der Funktion readLine() als "line" erkannt werden. Leider scheint das aber nicht zu funktionieren. Wie muss denn ein String für diese Funktion aussehen, damit er als "line" erkannt wird?

Ich würde mich freuen, wenn mit jemand weiter Helfen könnte!

Viele Grüße
Daniel


----------



## eRaaaa (13. Aug 2010)

BufferedReader (Java Platform SE 6)


> Reads a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.



Zeige doch mal den Code wo du schreibst


----------



## Trivium6 (14. Aug 2010)

Morgen Basti!

Versteh grad nicht ganz was du mit Code meinst, hab ihn doch oben gepostet!? 
Die Strings die empfangen werden sollen haben folgende Form:

Cam[Kameranummer]: [Wert]

also z.B.

Cam1: 321.01 

Ich habe versucht sie folgendermaßen zu senden, damit sie von readline() gelesen werden:

"Cam1: 321.01 \n"
"Cam1: 321.01 \r"
"Cam1: 321.01 \r\n"
"Cam1: 321.01 $"

hat aber alles nichts genützt. Deshalb bin ich grad etwas ratlos 

Gruß
Daniel


----------



## eRaaaa (14. Aug 2010)

Trivium6 hat gesagt.:


> Versteh grad nicht ganz was du mit Code meinst, hab ihn doch oben gepostet!?


Nö, du hast den gepostet wo du liest,



> Ich habe versucht sie folgendermaßen zu senden, damit sie von readline() gelesen werden:



da wäre jetzt imo der Code interessant 

/EDIT: vermutlich fehlt da einfach nur ein flush oder ähnliches ?!?...


----------



## trivium6 (14. Aug 2010)

achsooo 

den code hab ich leider nicht. die smart camera wird über ein konfigurationstool via drag and drop geflasht, wobei ich dann einfach angeben kann, was für einen string sie senden soll.

der string wird wie in oben beschriebener form gesendet, das hab ich überprüft, d.h. es kommt auch wirklich z.B.
"Cam1: 387.01 \n" 
an.

problem ist einfach, dass ich den string nicht mit readline lesen kann, sondern nur mit den anderen read funktionen. ich will den string halt nicht in einem char array speichern, weil ich nicht weiß wie lang er ist und ich sonst diese vierecke (unbekannte zeichen) im string hab und nicht feststellen kann, wo ein datenblock anfängt und aufhört.


gruß
daniel


----------



## diggaa1984 (14. Aug 2010)

readLine geht mit sicherheit auch, nur blockiert es solange bis der stream abreisst oder ein endOfLine erkannt wird


----------

