Client/serveur FTP [Résolu]

snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 21 mai 2010 à 11:01 - Dernière réponse : snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention
- 25 mai 2010 à 21:17
bonjour,
j'essaye de développer un client FTP en se basant sur la bibliothèque libre org.apache.commons.net,
FTPClient f = new FTPClient();
f.connect("127.0.0.1",30);
f.login("client2", "passwd");
j'ai telechargé un serveur ftp:TYPSoft FTP Server ,je l'ai mis en écoute, la connexion s'établit, tous marche bien sauf lorsque je met
FTPFile[] files = f.listFiles("D:\");
il ne me renvoi rien, il ne fait que le f.listFiles();(il me renvoi les dossiers du bureau) malgré que j'ai configuré mon serveur pour donner à ce user la possibilité de voir toutes les racines.
est ce qu'il faut que je crée mon propre serveur FTP et si oui comment ?
merci vraiment pour l'aide
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 23 mai 2010 à 07:16
3
Merci
ça ne semble pas une super idée d'un point de vue sécurité d'avoir un accès au système de fichier complet par ftp (mot de passe circulant en clair + serveur ftp possédant souvent des failles de sécurité (type buffer overflow)).
Mais sinon pourquoi pas.
Sinon si tu ne t'en sort pas avec TYPSoft essaie de faire la même chose Filezilla serveur.

Merci cs_Kysic 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Kysic
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 21 mai 2010 à 11:20
0
Merci
Salut,

A mon avis, il faut spécifié un chemin existant sur ton serveur FTP : D:\ n'est sûrement pas un répertoire sur ton serveur FTP : un serveur FTP pointe vers un dossier en particulier.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 21 mai 2010 à 12:34
0
Merci
salut,
je veux parcourir tous les dossier dans toutes les racines,est ce que tu a une idée comment faire, la développement d'un serveurFTP serait-il une solution?
Commenter la réponse de snakeissat
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 22 mai 2010 à 13:34
0
Merci
Salut,
Essaie f.changeWorkingDirectory("D:\") puis f.listFiles() tu as plus de chance que cela fonctionne.
Sinon fait un ftp en ligne de commande sur ton serveur et tente des cd "D:\" ou autres pour voir ce que ton serveur ftp supporte.
Commenter la réponse de cs_Kysic
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 22 mai 2010 à 13:46
0
Merci
salut,
j'ai déja essayé f.changeWorkingDirectory("D:\") mais ça marche pas,lorsque je fait en ligne de commande ftp cd
il me dit non connecté malgré que mon serveur en marche, je sais pas quel type de serveur me faut il pour faire fonctionner une telle application.
Commenter la réponse de snakeissat
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 22 mai 2010 à 15:02
0
Merci
En ligne de commande il faut faire si ton serveur est en localhost :
ftp localhost
[tape ton login puis entrée]
[tape ton password puis entrée]
après une fois logué tu peux tapé help pour les commandes accessibles
D'intéressant pour toi tu as :
"pwd" qui te montre le repertoire courrant
"ls" ou "dir" qui liste la liste des fichiers du repertoire
"cd <rep>" qui permet de changer de répertoire, exemple "cd .." pour aller au repertoire parent.
Je ne sais pas comment ça fonctionne avec un serveur ftp sous windows, sous linux pour aller à la racine on fait "cd /".
Commenter la réponse de cs_Kysic
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 22 mai 2010 à 15:39
0
Merci
Salut,

Kysic : est-ce qu'il est possible de changer de disque en ftp ? car apparemment, c'est ce qu'il cherche à faire avec son f.changeWorkingDirectory("D:\").

Il me semble bien que ftp est fait pour ne travailler qu'à partir d'un répertoire bien précis, et n'a pas accès à tout les disques de la machine, si ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 22 mai 2010 à 15:52
0
Merci
Je sais pas avec son serveur ftp et sous windows mais le protocole ftp n'impose pas de limitation particulière.
Avec un serveur ftp sous linux, en général le répertoire de connexion dépends du login, on arrive par exemple dans le /home du user. Mais suivant la configuration du serveur on peut très bien changer de répertoire pour remonter (avec ..) dans un répertoire plus haut. On peut également configurer le serveur pour que le répertoire par défaut soit "/".
Sous linux, un autre disque ou une autre partition sera accessible comme un dossier normal (par exemple dans "/media/disque2/")
Ce n'est généralement pas ce qui est souhaité, on préfère "chrooter" pour que les utilisateurs ne sortent pas de leur répertoire.
Sous windows je suppose que l'on peut aussi configurer le serveur pour pouvoir accéder à tous les dossiers de la partition. Pour changer de disque ou de partition je sais pas trop, mais je suppose que certains serveur doivent l'autoriser par exemple en ajoutant un niveau "/" dans la hiérarchie de dossier.
dans ce cas "cd /c" permettrait d'accéder à C et "cd /d" à D.
Commenter la réponse de cs_Kysic
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 22 mai 2010 à 15:57
0
Merci
Salut,

Ok, merci de cette précision, c'est bon à savoir, je pensais que les serveur FTP ne permettait que de travailler dans un seul répertoire (en tout cas, je m'étais jamais vraiment posé la question).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 22 mai 2010 à 16:01
0
Merci
Au pire il peut créer deux users, un dont le repertoire par défaut est la racine de C et l'autre pour lequel c'est la racine de D.
Il se loggue avec l'un ou l'autre suivant ce qu'il veut faire.
Bon c'est assez moche quand même.
 
Commenter la réponse de cs_Kysic
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 22 mai 2010 à 18:56
0
Merci
salut,
merci pour la discussion, en faite ce que je veut faire c'est la visualisation de l'arborescence du système des fichiers de toutes machines connectés sur un réseau, j'ai pensé à activer un serveur FTP qui ecoute sur un port donné dans chaque machine et exécute le travail demandé (listFiles, upload...) par un client FTP (écrit en java)
Commenter la réponse de snakeissat
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 23 mai 2010 à 23:01
0
Merci
salut,
merci pour les suggestions, j'ai essayé avec FileZilla server mais le problème reste le même
ftp.changeDirectory("C:") m'affiche un msg d'erreur :"/C:": directory not found.
j'ai essayé tous les solution, j'ai même pensé en RMI mais encore ça n'a pas marché.
en tous cas merci,
Commenter la réponse de snakeissat
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 24 mai 2010 à 09:37
0
Merci
Mais non il ne faut pas abandonner, au pire tu fais une class serializable contenant un attribut String nomDeFichier et un attribut byte[] contenu; et tu l'envoi dans une connexion tcp.

Mais pour en revenir à ftp, ça m'intrigue.
A tu essayé ftp.changeDirectory("C"); ftp.changeDirectory("/C"); ftp.changeDirectory("/c"); ftp.changeDirectory("C:/"); ftp.changeDirectory("C:"); ftp.changeDirectory("../"); ftp.changeDirectory("../../..");...

Sinon essaie un truc de ce genre et voit ce qu'il te sort :

FTPClient f = new FTPClient();
f.connect("127.0.0.1",30);
f.login("client2", "passwd");
do {
  System.out.println(f.printWorkingDirectory());
}
while (f.changeToParentDirectory());
Commenter la réponse de cs_Kysic
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 24 mai 2010 à 16:46
0
Merci
salut,
merci encore une fois, j'ai essayé d'utiliser ce package croyant que ça va me faciliter la tache,mais les socket semblent mille fois plus performant.
bon, j'ai essayé un truc qui semble un peut bete en utilisant les socket,le serveur de la machine demandé envoie le chemin de tous les dossiers dans un fichier .txt, et du coté recepteur le client lit le fichier ligne par ligne, il fait
File ff=new File(ch2);
ff.mkdirs();
ch2 étant un chemin d'un dossier de type C:\Documents and Settings\Administrateur\
etc
cela permet de créer une arborescence semblable à celle de l'émetteur et de la rasembler dans un dossier puis je fait le parcours de ce dossier et je reconstruit une arborescence puis j'efface récursivement les dossiers construit,
ça me semble vraiment bête mais quand même ça donne plus au moins une solution .
merci
Commenter la réponse de snakeissat
snakeissat 30 Messages postés jeudi 20 mai 2010Date d'inscription 8 juillet 2012 Dernière intervention - 25 mai 2010 à 21:17
0
Merci
salut,
merci bien pour tous les efforts, le problème est résolu, maintenant je peut accéder aux sous répertoires.
si tu as une idée comment pourrais je faire un JFileChooser d'une machine en réseau.
merci.
Commenter la réponse de snakeissat
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 25 mai 2010 à 18:54
-2
Merci
J'ai fait des petits tests en arrivant au boulot ce matin :
Avec Filezilla serveur si tu veux accéder à plusieurs partition il faut utiliser les alias.
J'explique, tu crée d'abord un répertoire ftp sur le PC (par exemple
le dossier C:\ftp) qui est vide).
Tu va dans le menu de configuration de l'utilisateur avec l'interface
du serveur (Edit->Users).
Tu va dans les répertoires partagés de ton utilisateur (Shared Folder).
Tu ajoute le répertoire C:\ftp dans les répertoires auquel il a accès
et tu le met en "home dir" (c'est la qu'il aterrira en ce connectant).
Tu ajoute ensuite le répertoire C: et tu lui met comme alias C:\ftp\C.
Tu ajoute ensuite le répertoire D: et tu lui met comme alias C:\ftp\D.
Désormais si tu te connecte avec cet utilisateur si tu fait un ls
après t'être connecté tu verra C et D (tes deux alias) et tu pourra
aller dedans (cd /C ou cd /D).
C'est vrai que c'est pas super intuitif...
Commenter la réponse de cs_Kysic

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.