Transfert de fichiers

cs_kiitos Messages postés 34 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 14 septembre 2008 - 13 sept. 2008 à 16:46
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 22 sept. 2008 à 17:40
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

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 sept. 2008 à 17:07
oui
0
Kian_ix Messages postés 26 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 5 avril 2009
13 sept. 2008 à 22:15
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 ^^
0
cs_kiitos Messages postés 34 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 14 septembre 2008
14 sept. 2008 à 13:09
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].
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
22 sept. 2008 à 17:40
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]
0
Rejoignez-nous