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().


Log in to reply