Salut a tous, j'ai un petit soucis lors de l'envoi d'un fichier octet par octet par un send, en effet le fichier est bien envoyé et arrive bien mais ma charge CPU monte a 80% et mon programme qui fait le send est figé pendant 15 secondes alors que le fichier est déja recu et écrit dans un fichier...

Ma fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
void envoi_fichier (SOCKET client)
{
    FILE* file = NULL;
    char addr_file[20] = "";
    recv(client, addr_file, 20, 0);     /*Le client envoit l'adresse du fichier a ouvrire */
    file = fopen(addr_file, "rb");
    char buff = 0;
    int taille = 0;
    printf("Ouverture de '%s'", addr_file);
 
        if(file != NULL)
        {
            fseek(file, 0, SEEK_END);
            taille = ftell(file);
            printf("\n%d octets a envoyer\n", taille);
            send(client, &taille, 10, 0);
    printf("\nOuverture du fichier\n");
    rewind(file);
    while (taille > 0)
    {
        /*T_BUFFER vaut 1 */
 
        if (fread(&buff, sizeof(char), T_BUFFER, file) == 0)
        {
            printf("\nErr fread()");
        }
        printf("\nCaractere lu : %c, taille : %d octets", buff, sizeof(buff));
        if (send(client, &buff, sizeof(buff), 0) == SOCKET_ERROR)
        {
            printf("\nErr send fichier\n");
        }
 
        taille -= T_BUFFER;
        }
 
        printf("Fichier envoyer\n");
        }
 
        else
        {
        printf("\nErr ouverture fichier\n");
        }
 
        fclose(file);
        printf("Fichier fermer\n");
 
}
Je ne suis pas sur d'avoir compris tout le principe de la mémoire Est ce que ma fonction envoit octet par octet ou char par char ? Et pourquoi cette surcharge CPU ? Mon programme marche très bien si j'envoit mon fichier par chaines de caractères mais apparement pour etre sur de tout bien recevoir il faut le faire caractère par caractère (ou octet par octet je ne sais pas trop). Merci de m'éclairer !!