Von Sockets zeilenweise einlesen
-
Hallo,
ich erlerne gerade C++ und habe dieses Tutorial (http://cybersound.cy.funpic.de/tutorial-programmieren/internet-server.php) verwendet um einen Server zu programmieren. Ich möchte nun gerne zeilenweise Nachrichten einlesen, die von einem Java-Client kommen und mit '\n' terminiert sind. Leider funktioniert das nicht so ganz wie ich möchte. Ich lese mit recv ein und schreibe die Sachen in einen char-Array. Ich habe versucht einmal komplett einzulesen, dann kommen die Daten aber abgehackt an. Wenn ich jeweils nur ein Byte einlese, dann kommt das '\n' als zwei Zeichen mit '\' und 'n' an. Auch einen String einzulesen und dann nachher mit strcmp versuchen das '\n' zu finden hat nicht funktioniert. In einem Beitrag in diesem Forum stand, dass man ja die Länge des Befehls vorne angeben könne, aber das ist leider nur eine Notfalloption, da es neben den Programminternen Befehlen auch die Möglichkeit eines Terminals geben soll und das Abzählen der Zeichen, die man senden möchte nicht besonders benutzerfreundlich ist. Könnt ihr mir helfen?
tschö, Peter
-
dann kommt das '\n' als zwei Zeichen mit '\' und 'n' an.das geht überhaupt nicht

höchstens ist noch ein \r dabei
-
Hallo,
ich habe aber als ich zeichenweise gelesen habe, mir das Zeichen jeweils ausgeben lassen, da habe ich eben einmal das \ und einmal das n eingelesen. Als ich dann den String eingelesen habe, konnte ich auch substr(i-2, 2) machen und es wurde "\n" ausgegeben.
tschö, Peter
-
Hallo!
Also, das eine Problem konnte ich lösen, dafür ist ein Neues direkt aufgetaucht. Der Fehler lag im byteweise Versenden der Nachrichten, was mir erst jetzt aufgefallen ist. Nun allerdings passiert folgendes:
Der Client schickt "Hello\n"
Der Server liest bis "Hello" und bleibt dann stecken, einen SOCKET_ERROR bekomme ich nicht, aber der Client sendet danach noch "DISCONNECT\n", schließt den Socket und beendet sich selbst. Warum erreicht das den Server nicht mehr?viele Grüße, Peter