Quote Originariamente inviata da shodan Visualizza il messaggio
Usa direttamente le API di Windows allora. Più in basso di così non si può andare.
codice:
//path del file di destinazione
string destinationFile="\\\\cartella_di_rete\\file.dati";
//file di destinazione

// ofstream outfile(destinationFile, ios::binary | ios::out | ios::trunc);

HANDLE hfile = CreateFile(
    destinationFile.c_str(),  
    (GENERIC_READ | GENERIC_WRITE), 
    (FILE_SHARE_READ | FILE_SHARE_WRITE), 
    nullptr,
    CREATE_ALWAYS,
    FILE_ATTRIBUTE_NORMAL,
    nullptr
);
    
if (hfile == INVALID_HANDLE_VALUE) 
    /* Errore */
    return;    
    
DWORD wbytes = 0;    
//crea il buffer di lettura
mybuffer = new uint8[20480*512];
//cicla per leggere il file diviso in diversi chunk
for (int i = 1; i <= chunk; i++) // perché da 1? E' voluto?
{
     //funzione che legge il file originale e lo copia nel buffer(in realtà è molto più complessa, 
    // in quanto si tratta di una funzione di terzi ma non ci interessa in questa sede)
     bool ckok= ReadFile( mybuffer, i);
    if (ckok)
      WriteFile(hfile, mybuffer, bufSize, &wbytes, nullptr);
}

delete[] mybuffer; 
CloseHandle(hfile);
ho provato ed in effetti per quanto riguarda il trasferimento via rete (mentre su una cartella locale è invariato) è quasi due volte più veloce!!
Grazie