chetsam | Bonjour,
j'ai réussi a transférer des gros fichiers binaire a travers les socket c mais malheureusement la taille du buffer que je met dans le buffer de recv et de send ne doit pas dépasse 4 octets sinon le fichier est corrompus lors du transfert
voici le code ma fonction upload coté serveur
Code :
- int upload(const char* fichier,int socket,int buff)
- {
- FILE *fs;
- int octet_envoye;
- int taille_fichier;
- unsigned char *buffer;
- fs = fopen(fichier, "rb" );
- int deplacement=50;
- fseek(fs, 0, SEEK_END);
- taille_fichier = ftell(fs);
- buffer = malloc(buff);
- fseek(fs, 0, SEEK_SET);
- int octet_total=0;
- int taille_temporaire=ftell(fs);
- while (taille_temporaire!=taille_fichier)
- {
- fread(buffer,sizeof(char),buff,fs);
- octet_envoye=send(socket, buffer, sizeof(buffer), 0);
- if(octet_envoye<0)
- {
- perror("erreur de send" );
- return 1;
- }
- printf("le nombre d'octet envoyé est %d\n",octet_envoye);
- taille_temporaire=ftell(fs);
- octet_total+=octet_envoye;
- printf("nombre total d'octet envoye est %d \n",octet_total);
- printf("voici la taille temporaire est %d\n",taille_temporaire);
- printf("le nombre d'octet envoyé est %d\n",octet_envoye);
- }
-
- return 0;
- }
|
voici le code de ma fonction téléchargement coté client
Code :
- int telechargement(const char *fichier,int socket,int buff)
- {
- FILE* fd;
- unsigned char *buffer;
- buffer=malloc(buff);
- fd=fopen(fichier,"ab" );
- int octet_recu=0;
- int taille_fichier=65115;
- fseek(fd, 0, SEEK_SET);
- int taille_temporaire=ftell(fd);
- taille_temporaire=0;
- while(taille_temporaire<=taille_fichier)
- {
- octet_recu=recv(socket, buffer, sizeof(buffer), 0);
- if(octet_recu<0)
- {
- perror("erreur recv" );
- }
- printf("le nombre d'octet reçu est %d\n",octet_recu);
- fwrite(buffer,sizeof(char),buff,fd);
- taille_temporaire=ftell(fd);
- printf("la taille temporaire est %d \n",taille_temporaire);
- }
- fclose(fd);
- return 0;
- }
|
merci[cpp][/cpp] |