Datei senden. Buffer-Size beliebig groß gestaltbar?



  • Hallo,

    mir stellt sich grad die Frage wie groß mein
    Buffer-Size beim Übertragen einer Datei sein darf.

    Ist es egal und max. durch die Leistung meiner Internet/LAN-Verbindung limitiert
    und wird automatisch runtergeschraubt wenn es zu hoch ist, oder habe ich evtl.
    Probleme wenn ich eine Datei sende, die nichtmal so groß ist wie der
    erste gesendete Buffer-Size?

    Z.B.

    //Server
    #define SEND_BUFFER_SIZE    102400
    //( zu sendende Datei ist aber nur 1KB groß)
    
    CSocket sockSrvr;
    //...
    
    //sende Daten rüber, Datei 1KB, aber Buffer-Size wesentlich größer
    //als gesammte Datei!
    sendData = new BYTE[SEND_BUFFER_SIZE]; 
    
    //...
    


  • vom prinzip her so:

    bool send_it_all (int socket, char *data, unsigned int size)
    {
        while (size)
        {
            unsigned int txsize = size > 1024 ? 1024 : size;
            int sendresult = send (socket, data, txsize);
            if (sendresult == error)
                return false;
            size -= sendresult;
            data += sendresult;
        }
        return true;
    }
    

    🙂



  • dann zeig ihm auch wie er die Daten dann wieder empfangen soll ...



  • (D)Evil schrieb:

    dann zeig ihm auch wie er die Daten dann wieder empfangen soll ...


    🙂



  • Tjo ... dann bringt deine Lösung nicht viel ... woher soll der Empfänger wissen wie viele Datenpakete er zu erwarten hat?!



  • (D)Evil schrieb:

    Tjo ... dann bringt deine Lösung nicht viel ... woher soll der Empfänger wissen wie viele Datenpakete er zu erwarten hat?!

    ich bin davon ausgegengen, dass ein streaming protocol wie TCP/IP verwendet wird, kein paketorientiertes.
    btw: ...und es gibt, egal welchen protokolltyp man wählt, verschiedene möglichkeiten, dem empfänger das ende der übertragung mitzuteilen.
    mein beispiel tut das nicht, es versendet nur die rohdaten.



  • Hallo,

    ich habe Server und Client schon lange fertig. Dachte nur es könnte
    prinzipiel Probleme geben wenn der Buffer zu groß ist, was sich aber bereits erledigt hat und auch Quatsch wäre.


Anmelden zum Antworten