| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 
 |  
int Thread::envoyerData(string enteteReponse,Requete * r){
 
 
    char buffer[100];
    char * enteteReponseChar;
 
    // On convertie l'entete en char *
    enteteReponseChar = Fonctions::string2char(enteteReponse);
 
    int erEnvoye;
    int erRestant = strlen(enteteReponseChar)*sizeof(char);
    printf("Taille entete : %d\n",erRestant);
    // Envoie de l'entete.
    do{
            // On vide le buffer à chaque fois.
            Fonctions::viderBuffer(buffer);
 
            // On remplit le buffer avec enteteReponse.
            strncpy(buffer,enteteReponseChar,sizeof(buffer));
 
            // On envoie le buffer.
            erEnvoye = send(getFdClient(),buffer,sizeof(buffer),0);
            cout<<buffer;
            // On decale le pointeur sur enteteReponse, pour envoyer la suite.
            enteteReponseChar += erEnvoye;
 
            // Mise à jour du compteur.
            erRestant-=erEnvoye;
    }while(erRestant>0);
    // Tant qu'on a pas envoyé toute l'entete.
 
    // ICI l'entête a été envoyé.
 
    // Envoie du fichier demandé.
 
    FILE *fichier = fopen(Fonctions::string2char(r->getFichier()),"r");
 
    // Fichier qui crée un fichier, correspondant aux données envoyées. (Pour les tests).
    FILE *copie = fopen("/home/greg/copie.jpg","w+");
 
    // On récupère les descripteurs des 2 FILE.
    int fdFichier = fileno(fichier);
    int fdCopie = fileno(copie);
 
    int dataLu;
 
    do{
        //Fonctions::viderBuffer(buffer);
 
        // On lit le fichier.
        dataLu = read(fdFichier,buffer,sizeof(buffer));
 
        // On écrit le fichier en local. (COPIE)
        write(fdCopie,buffer,dataLu);
 
        // On envoie le fichier
        send(getFdClient(),buffer,dataLu,0);
	}while(dataLu>0);
 
    // On ferme tout
    fclose(fichier);
    fclose(copie);
    close(getFdClient());
    return 0;
} | 
Partager