Client download fichiers par serveur [Résolu]

Signaler
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
-
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
-
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

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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...
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

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 !
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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 ;)
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

SI tu trouves un tutorial (il y en a probablement un), tu me dit ou, oui ? :p

Gendal67, à votre service !
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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 ;)
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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 ;)
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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 ;)
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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..
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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 ;)
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
Moi aussi je pense ça :big) enfin merci pour tout !
bthivent, jeune programmeur c++ dans ses débuts ;)