(socket)string sendegerecht aufbereiten



  • hallo

    ich möchte einen string übers netzwerk senden. nun kann es jedoch sein, dass dieser string viel zu lang für den buffer von 1024 ist. jetzt möchte ich also den string teilen, und in den einzelnen fragmenten senden. leider stecke ich grad bei der teilungsfunktion fest.

    ich möchte die strings in einem vector<string> unterbringen.

    int SendData(int socket, string Buffer)
    {
    	int bytesSent = 0;
    	if(Buffer.length() > 1024) {
    		//buffer to big, split it.
    		vector<string> SendBuffer;
    

    jetzt muss ich ja irgendwie den string teilen. das funktioniert ja mit substr().
    doch jetzt brauch ich mal hilfe für das verstehen der funktion.
    mit

    SendBuffer.push_back(Buffer.substr(0, 1024));
    

    kann ich genau einen string, den ich brauche einlesen, doch weiter? wie kann ich das verbinden, dass der ganze string in den vector kommt?
    ich habe keine idee für eine schleifenbedingung, außerdem für den fall, dass der letzte teil des strings eben nicht 1024 zeichen hat...

    greetz



  • Warum so kompliziert?
    Benutz doch einen Zeiger auf die Daten und schieb den Zeiger immer weiter.
    In etwa so (pseudocode, ungetestet)

    int SendData(int socket, string Buffer)
    {
        char* b = Buffer.c_str();
        int len = Buffer.length();
    
        int sendedBytes = 0;
        while(sendedBytes < len)
        {
          sendedBytes += send(socket,b); // Fehlerbehandlung fehlt hier
          b += sendedBytes;
        }
    


  • und wie muss dann die empfängerseite aussehen?

    ich dachte mir, dass ich zuerst die größe übermittele und dann den empfänger entsprechend anpasse, ist das gut so oder gibt es da auch ne einfachere lösung?^^

    danke schonmal 🙂




Anmelden zum Antworten