DWORD TailleFichier(char *fichier) { DWORD TFichier = 0; HANDLE hfl = CreateFile(fichier, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); // Donne la taille en octet TFichier = (GetFileSize(hfl, 0)); CloseHandle(hfl); return TFichier; } char *CheminFichier = "C:\\fichier.exe"; // a modifié // On crée le buffer et on ouvre le fichier en binaire char buf2[1024+1]; FILE *FichierEnvoi = fopen(CheminFichier, "rb"); // On envoi la taille du fichier char TailleChar[100]; DWORD Taille=TailleFichier(CheminFichier); sprintf(TailleChar,"%d",Taille); sockwrite(Client, TailleChar); // On envoi le fichier tant qu'on est pas a la fin while(!feof(FichierEnvoi)) { memset(buf2, 0, sizeof(buf2)); fread(buf2,1024,1,FichierEnvoi); send(Client,buf2,1024,0); } // On le ferme fclose(FichierEnvoi);
// Crée le fichier en mode binaire FILE *FichierRecu = fopen("C:\\lefichierketuveu.exe", "ab"); char buf[1024+1]; memset(buf, 0, sizeof(buf)); // On réceptionne la taille du fichier recv(Client, buf, sizeof(buf), 0); // On la transforme en int int taille = atoi(buf); unsigned int n; // Tant qu'on est pas arrivé a la taille du fichier on receptionne les données while(taille > 0) { memset(buf, 0, sizeof(buf)); n = recv(Client, buf, sizeof(buf), 0); // On écrit dans le fichier fwrite(buf, n, 1, FichierRecu); taille = taille - n; } // On ferme le fichier fclose(FichierRecu);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question