Client download fichiers par serveur

Résolu
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 - 14 nov. 2004 à 18:11
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 - 14 nov. 2004 à 21:35
Bonjour ! J'ai créé un système de client/serveur qui marche très bien. Et maintenant j'aimerais que, dès que le client se connecte au serveur, il y ait une liste de tous les fichiers téléchargeables à partir du serveur (c'est le serveur qui envoi la liste). Ces fichiers sont contenus dans un dossier.
Ce que j'aimerai savoir, c'est comment lister tous les fichiers contenus dans un dossier, et ensuite comment le client peut les télécharger (les fichiers téléchargés arrivent aussi dans un dossier défini dans le programme, ex : "Fichiers recus"...)
Merci d'avance, et @bientôt !
bthivent, jeune programmeur c++ dans ses débuts ;)

12 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 nov. 2004 à 20:46
Salut,
Coté serveur: pour envoyer un fichier, il faut dabord envoyer une structure qui contient les infos du fichier (taille, nom, etc..). Ensuite on ouvre le fichier, on le lis par paquet (plusieurs Ko a la fois) et on envoie ces paquets.

Coté client, on receptionne la structure, on a donc la taille du fichier, voire son nom.
On ouvre le fichier, et on écrit dedant tout ce qu'on recoit jusqu'a ce qu'on ai recu le mon nombre d'octets. Puis on le ferme.
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 nov. 2004 à 21:01
Salut,
Ben quand le serveur a envoyé tout les fichiers, tu envoie un message pour dire au client que c'est fini.
Et quand le client recoit ce message, il break de la boucle.
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 nov. 2004 à 21:31
Salut,
Pour comparer une chaine en C, c'est strcmp().
if(!strcmp(buffer, "0")) { ... }

Je crois que tu devrais commencer par lire un bouquin de C pour bien maitriser les bases, avant de s'attaquer a la programmation reseau...
3
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
14 nov. 2004 à 19:35
tu connais l'assisstant de recherche sur cppfrance ? Il y a déja des sources/questions-forum qui traitent ce pb, donc voila, rien à ajouter....

Gendal67, à votre service !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 20:24
Merci ! j'ai trouvé comment faire une liste... maintenant je crois que j'ai trouvé quelques trucs pour l'envoie de fichiers, mais je ne suis pas très sur.. il n'existerait pas un tutorial ?
bthivent, jeune programmeur c++ dans ses débuts ;)
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
14 nov. 2004 à 20:27
SI tu trouves un tutorial (il y en a probablement un), tu me dit ou, oui ? :p

Gendal67, à votre service !
0
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 20:46
Ok lol...
Et j'ai besoin d'aide pour un petit truc...
Je fais la liste des fichiers contenus dans un dossier
Je l'affiche chez le client par des send
donc chez le client, il y a un while(recv(...))
Mais lr problème c'est que même quand j'envoie plus rien, je reste dans la boucle... et je ne peut pas continuer (pour demander le nom du logiciel à télécharger..)

bthivent, jeune programmeur c++ dans ses débuts ;)
0
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 20:56
Ok merci aardman, c'était ce que j'avais pensé avoir vu dans un code source..
Je vais essayé de faire ça.. et sinno poour l'autre problème, tu aurait une idée ?
bthivent, jeune programmeur c++ dans ses débuts ;)
0
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 21:04
Ben j'ai justement pensé à ca ! Mais on ne peut envoyé qu'un message au client : Et comment..
ah si ca y est..
lol
j'affiche le message par le buffer de mon recv..
donc je vérifie ca valeur, et si elle vaut 1 je break.. merci ! ;)

bthivent, jeune programmeur c++ dans ses débuts ;)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 nov. 2004 à 21:09
Salut,
Mais en théorie si le prog etait bien structuré, tu devrait avoir qu'une seule boucle pour la reception, et tout les messages que tu envoies devraient avoir une entete qui décrit leur contenu, leur taille, etc..
0
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 21:20
Ben voici des bouts de codes explicatifs :

                send(csock, "::Connexion etablie::\nBienvenue chez moi !\nFichiers telechargeables :\r\n", 100, 0);
                cout << "\nFichiers que le client peut telecharger :" << endl;
                lister(csock,"fichiers\\*.*");
                send(csock, "0", 10, 0);


    char buffer[255];
    while(recv(sock, buffer, sizeof(buffer), 0))
    {
        if(buffer == "0")
        {
            break;
        }
            cout << endl << buffer << endl;        
    }


mais ca ca ne marche pas, au début j'avais essayé en mettant send(csock, "break"...) et if(buffer=="break") pusi après pareil pour 0, et puis là j'ai essayé avec 0 entre guillements ("0")

bthivent, jeune programmeur c++ dans ses débuts ;)
0
bthivent Messages postés 49 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 26 janvier 2005 3
14 nov. 2004 à 21:35
Moi aussi je pense ça :big) enfin merci pour tout !
bthivent, jeune programmeur c++ dans ses débuts ;)
0
Rejoignez-nous