Socket string versenden
-
Kann ich ein String der Form
std::string data("4.5\n1\n2\t5\n"); send(socket,data.c_str(),strlen(data.c_str),0)über ein TCP versenden oder machen die \n eventuell Probleme?
Ich habe auf der anderen Seite versucht mit (s.unten) etwas auszulesen aber bekomme ein Segmentationfault
std::stringstream recieved; count=recv(connectedSocket,b,255,0); recieved<<b; b[count]='\0'; std::string value,value2,value3; getline(recieved,value,'\n'); getline(recieved,value2,'\n'); getline(recieved,value3,'\n');Danke im Voraus!
-
Ein Zeilenumbruch im String sollte keine Probleme machen (übrigens brauchst du dort kein strlen() - der String kann dir seine Größe auch selber per
data.length()mitteilen.
Auf der Empfängerseite würde ich erst den Null-Terminator an den Empfangspuffer anhängen, bevor ich ihn als String nutze. (btw, ich hoffe, dein Puffer ist groß genug für den Null-Terminator)
-
Also der Fehler wird nicht von einem Zeilenumbruch ausgelöst!
ich habe mit einer while-Schleife versucht Daten stückweise zu empfangen aber lande anschließend in einer Endlosschleife. Vielleicht sollte ich erwähnen, dass ich als Entwicklungsumgebung VS2008 verwende!
-
Beobachter01 schrieb:
Vielleicht sollte ich erwähnen, dass ich als Entwicklungsumgebung VS2008 verwende!
Dann wäre es eine gute Gelegenheit, sich mit den Möglichkeiten des mitgelieferten Debuggers zu beschäftigen.
-
--gelöscht..
-
Vertausche Zeile 3 und 4 bei der Empfangsschleife. Nutze beim Sender string.length() statt strlen().