Uploads/downloads en masse avec FTP

MGD Software 52 Messages postés vendredi 1 septembre 2006Date d'inscription 3 décembre 2017 Dernière intervention - 3 déc. 2017 à 18:29
Bonjour,

J'ai un travail à effectuer, qui consiste à comparer des répertoires entre un serveur FTP et un répertoire local, envoyer ou recevoir certains de ces fichiers ou en supprimer certains.

Il n'y pas de problème en utilisant un FtPWebRequest avec à chaque fois l'URI concernée, le type d'opération avec une WebRequestMethod et la méthode GetResponse.

Cependant, si j'ai bien compris le principe, cela implique à chaque création de FtpWebRequest d'une connexion, ainsi qu'une déconnexion à la fin de l'opération. Quand on a par exemple une centaine de fichiers à envoyer, je trouve cela très peu efficace.

Le type de travail à effectuer pourrait s'apparenter à ceci :
Se connecter au serveur
Pour chaque répertoires de la liste
Se placer sur le répertoire distant correspondant
Récupérer la liste distante du répertoire
Comparer chaque fichier avec celui du répertoire local
Si le fichier local est différent ou plus récent que le distant
l envoyer
sinon si local présent
le recevoir
sinon
supprimer le distant
Passer au répertoire suivant
Se déconnecter du serveur


Actuellement, en utilisant les méthodes citées plus haut, il y a une connexion au serveur pour chaque listing, chaque envoi et chaque réception. Je voudrais optimiser cela.

Je ne comprends pas bien le fonctionnement de la propriété KeepAlive. Si on laisse la connexion ouverte, qu'est-ce qui la récupère? comment elle se ferme ?

J'ai beaucoup de soucis avec certains serveurs, tel que celui des pages perso de Free, qui ont un timeout très court (30 secondes) et ferment leur socket sans prévenir le client. Cela provoque souvent des erreurs de comm, car le client ne sait pas que le serveur a fermé et tente des commandes qui n'aboutissent pas. J'ai peur qu'avec KeepAlive à true j'ai encore plus de problèmes qu'avec false.

Je n'ai pas trouvé le moyen de changer l'URI de la FtpWebRequest, ou la WebRequestMethod (passage du listing au transfert, de l'envoi à la réception ou changement de fichier) sans fermer la connexion.

Quelqu'un saurait me dire comment faire ?
Afficher la suite 
52Messages postés vendredi 1 septembre 2006Date d'inscription 3 décembre 2017 Dernière intervention

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.