Transfert de fichiers

Signaler
Messages postés
34
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
14 septembre 2008
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Mes deux programmes n'arrivent pas toujours à s'envoyer des fichiers correctement, est ce qu'il y a un moyen de faire un serveur qui envoie des fichiers sans aucune erreurs ?

4 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
oui
Messages postés
26
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
5 avril 2009

fais voir ton code mais oui évidement ya un moyen
moi je sais que la premiere fois que jai créé un prog d'échage de fichiers javais plins d'erreurs d'octets dans les fichiers pasque je fesais des sends de 1 octets a la suite et ca arrivait dans le désordre mais bon je débutais ^^
Messages postés
34
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
14 septembre 2008

recv(sock, buffer, sizeof(buffer), 0);
    taille = atol(buffer);
    printf("\n%ld\n\n", taille);
    while(taille > TAILLE_BUF)
    {
        recv(sock, copy, TAILLE_BUF, 0);
        fwrite(copy,1, TAILLE_BUF, fp);
        taille = taille - TAILLE_BUF;
    }
    memset(copy, '\0', TAILLE_BUF);
    recv(sock, copy, taille, 0);
    fwrite(copy,1, taille, fp);

fseek(fp , 0, SEEK_SET);
    fseek(fp , 0, SEEK_END);
    taille = ftell(fp);
    sprintf(mychar, "%d", taille);
    strcat(buffer, mychar);
    send(csock, buffer, strlen(buffer), 0);
    memset(mychar, '\0', 5000);
    fseek(fp , 0, SEEK_SET);
    printf("\n nombre d'octets : %ld\n\n", taille);
    while(taille > TAILLE_BUF) //si la taille du fichier est supérieure à la taille du buffer
    {
        fread(copy,1, TAILLE_BUF, fp); //on lit le contenu du fichier
        send(csock, copy, TAILLE_BUF, 0); //et on l'envoie
        taille = taille - TAILLE_BUF; //tant qu'on n'est pas à la fin du fichier
    }
    memset(copy, '\0', TAILLE_BUF);
    fread(copy, 1, taille, fp); //on lit le contenu du fichier
    send(csock, copy, taille, 0);

J'ai pris la n-ième source d'un autre gars comme n-ième exemple et je
suis content que ça marche un peu mieux. Je me demande combien de fois ce
code fonctionnera, #define TAILLE_BUF 1000 et copy[TAILLE_BUF].
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yop,

Un petit conseil, au lieu d'y aller a tâton , prend bien le temps de comprendre les socket, c'est pas très dure. et puis après fait le code toi même, tu veras , ce sera bcp plus claire.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]