Envoi de fichier non complet [Résolu]

Signaler
Messages postés
37
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 décembre 2006
-
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
-
bonjour à tous,
je cherche à envoyer un fichier par socket et ca marche pour les fichiers de petite taille (quelques ko) mais malheuresement dès que le fichier choisit est trop grand, il n'est pas lu jusqu'à la fin

    FILE *file;
    char msg[1024];
    ZeroMemory(msg,1024);
    file=fopen("test.bmp","r");
    int read=0;
    int total=0;
    while(1)
    {
        read=fread(&msg,1,1024,file);
        send(s,msg,read,0);
        total+=read;
        ZeroMemory(msg,1024);
        printf("octets envoye: %d\n",total);
        if(read<=0)
            break;
    }
    printf("envoi termine\n");

je comprend pas vraiment d'où l'erreur peut venir, mais j'ai testé plusieurs fois et a chaque fois le fichier envoyé est incomplet

merci d'avance

6 réponses

Messages postés
37
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 décembre 2006

tout d'abord merci pour vos réponses :)
ma boucle est pas plus infini que while((read = fread(&msg, 1, 1024, file))) ^^
mais c'est vrai que ça économise un peu de place
le fclose c'est de ma faute j'avai pas copié mon code en entier
sinon j'ai trouvé il fallait simplement un fopen("test.bmp","rb"); au lieu de "r", comme quoi passer pas mal de temps sur une erreur "bête" je commence à avoir l'habitude lol
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Salut trafounet,

ta boucle while(1) est une mauvaise idée essaye plutôt qq chose de ce style :
...
while((read = fread(&msg, 1, 1024, file)))
{
     send(s, msg, read, 0);
     total += read;
}
fclose(file); // A NE PAS OUBLIER, tout fichier ouvert doit être fermé

Tiens-moi au courant !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yoyo à raison, les boucle infinie sont une très mauvaise idée. Mais je ne pense tout de même pas que ce soit cela qui fasse planter le programme :s , il faudrait voir un peu plus de code .

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
LOL je l'avais même pas vu celui-là !!!
Pourtant ça m'est déjà arrivé ce truc.

PS: ta boucle n'est pas infinie mais utiliser un break pour sortir de la boucle alors qu'on peut facilement faire autrement, c'est à éviter. C'est pas la taille de code qui joue en fait.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
37
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 décembre 2006

oki merci du conseil!
sinon juste une petite question qui n'a pas grand chose à voir avec le sujet ^^
tu es à qu'elle école d'info? (si tu en as une) parce que moi ca commence à se rapprocher pour l'orientation lol (je suis en term s) et je pense aller à supinfo (si yen a qui connaissent... ou une autre école d'info)
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Désolé j'ai pas fait d'école d'info (IUT GEII puis école d'ingé en automatique et génie élec).
Mais t'as raison de poser la question, parce que c'est vraiment TRES important.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"