Serveur ftp et envoi de la liste de fichiers !

picolo5 Messages postés 31 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 18 décembre 2006 - 1 mars 2006 à 11:06
 Utilisateur anonyme - 3 mars 2006 à 00:54
Bonjour, je dev. un petit serveur ftp, mais sans composants !
je n arrive pas a envoyer le liste des fichiers du dossier en cours, je m explique :

le client envoit une commande de type 'LIST' , les serveur se connecte au client (serveur DTP) et doit lui envoyer la liste des fichiers du dossier en cours, je sais juste que cette liste est de type ascii, mais je n arrive pas a trouver d autres renseignement.
La definition du protocole ftp ne parle pas vraiment de cela :( , en effet la commande list permet d envoyer la liste grace au serveur DTP. mais je ne connait pas le protocole utilisé par ce serveur 'DTP'....

si quelqu un a deja fait ca ! ou si vous avez une source de client ou serveur ftp, qui me permeterait d' "intercepter" les 'trames' et cette liste pour voir le format, le caractere de fin de trame, ou si il y a des commandes specifiques a envoyer.....

merci !

7 réponses

Utilisateur anonyme
1 mars 2006 à 22:04
0
picolo5 Messages postés 31 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 18 décembre 2006
1 mars 2006 à 23:29
Ce tuto est interessant et je l avais deja consulte, il explique deja pas mal de chose mais je rappelle que je n utilise pas de composant donc cette source est d un niveau trop haut, le composants indy fait le travail que je voudrais faire....

je ne peut donc pas observer reellement les trames recues/envoyées a moins que je puisse remplacer le composants indy par ces sources ? j ai un peu de mal a tt comprendre dans les sources de indy :(
0
Utilisateur anonyme
2 mars 2006 à 00:47
Je veux pas dire de betise : mais il me semble que ton DTP a comme unique role de transferer ton fichier. Les protocoles de commande sont gérés par le client ou le serveur PI, selon le protocole TelNet.

Tu n'utilises pas de composants ? tu veux dire quoi par la ? tu peux etre plus précis ?
0
picolo5 Messages postés 31 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 18 décembre 2006
2 mars 2006 à 10:20
et bien juste 2 sockets ! pas de composants ftp ou autres.
j arrive a interpreter bcp de commandes deja, mais je bloke lorsque le client m envoi un 'LIST' :

j ouvre mon socket pour le DTP, je me connecte au client, lui envoi la liste de fichiers. puis sur le second socket, je lui dit que je ferme le socket et lui envoi quota.
la pluspart du temps les clients ftp affiche qu ils ont fini de recevoir la liste des fichiers mais l arborescence qu ils affichent est vide ! donc ils n arrivent surrement pas a 'comprendre' ma liste de fichiers !
comme tu le voit mon dtp joue juste son role d envoi de liste, mais il doit manquer un truc ! un 'fin' trame un peu speciale ou un truc de ce genre !

je crois que je vais faire autrement, je vais faire un client ftp et voir comment un serveur m envoi cette liste !

merci bcp !
0

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

Posez votre question
Utilisateur anonyme
2 mars 2006 à 10:54
Salut Picolo,

Je vais faire un poste assez long :

*Bon déjà je ne comprend pas l'intéret de faire un FTP pur et d'utiliser des sockets. Pk refaire ce qui existe deja ? en plus IdFTP est très simple à utiliser . A moins que tu assimiles FTP (File transfert Protocol) a tout protocole de transfert, ce qui n'est pas le cas ?

*Maintenant faire un transfert de fichier en utilisant un autre protocole que FTP, je comprends mieux l'intéret (il y a 2 ou 3 sources sur le transfert d'aborescence dont un que j'ai posté il ya peu de temps. Tu peux tjs allez voir ).


*Troisièmement ne dis pas que tu utilises pas de composants car tu en utilises (TSocket).

*Je crois que tu mélanges des choses en ce qui concerne le protocole FTP :

-Deja un transfert : tjs du client vers le serveur (a moins que je me trompe tu trouveras pas de source faisant le contraire).

-Ton DTP a un unique role : celui de transferer les fichiers. Une arborescence n'est pas un fichier. Tu es sur que dans le protocle FTP c'est le DTP qui t'envoye l'arborescence ??

-Le PI envoye et recoit des messages. Du reste c'est son role : il recoit un message et en fonction de cela, il y répond et controle son DTP. Cela est vrai pour le client et pour le serveur.

Pour conclure, si j'étais toi je mettrais en stand by mon projet pour bien réfléchir à ce que je veux faire, savoir quel est le meilleur composant à utiliser, comment il fonctionne, connaitre le protocole que je veux utiliser.

Si une de tes source ne fonctionne pas, poste la ca sera plus facile pour t'aider

A+
0
picolo5 Messages postés 31 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 18 décembre 2006
2 mars 2006 à 22:42
j avoue que je n est pas ete assez clair,

dsl j ai inverser dtp et pi :)
dsl j ai pas preciser sans composants 'ftp' :(

en fait je dev sur embedded vb , il n y a pas de composants ftpserver ou ftpclient, enfin pas inclus. Au lieu d utiliser un composant tierce je voulais tester ! mais peu etre que je me trompe, je peut bien faire un serveur ftp avec 2 sockets, un bout de ficelle et un chewingum ???

Pour moi un IdFtp c est : sockets + protocole ftp ?? (je resume) , ou alors c est la que je me trompe ?
Il est vrai que je me precipite un peu, c est un de mes defauts .
j ai deja realisé un client/serveur de transfert de fichiers (java), mai avec un protocol perso et tres limité.

Citation CCM:

"commande LIST :

Cette commande permet de renvoyer la liste des fichiers et répertoires présents dans le répertoire courant. Cette liste est envoyée sur le DTP passif. Il est possible de passer en paramètre de cette commande un nom de répertoire, le serveur DTP enverra la liste des fichiers dans le répertoire passé en paramètre " ;)

je ne trouve aucune doc sur ce je que doit reellement envoyer....

"-Deja un transfert : tjs du client vers le serveur (a moins que je me trompe tu trouveras pas de source faisant le contraire)."
= upload
et quand tu download ??

merci d avoir repondu et excuse moi de mon manque de clareté.
0
Utilisateur anonyme
3 mars 2006 à 00:54
Ce n'est pas grave et on est là pour s'aider. embedded vb : je connais pas et je ne sais meme pas ce que s'est (mdrrr).

Deux ou trois petites choses :

-La notion de client et serveur est tres ambigue. La notion la plus exacte à mon gout : le client est celui qui s'invite chez l'autre (comme au resto lol) autrement dit qui se connecte chez l'autre (l'autre c'est le client). Pour le download : d'après ce que je sais tu ne peux pas envoyer un fichier du serveur au client au sens des composants. Mais rien ne t'empeche de mettre sur ton logiciel client un composant client et un composant serveur (client pour le upload et serveur pour le download). Et pareil pour le serveur. C'est pour ca que je dis que la notion de client ou serveur est ambigue. Pk je dis que tu ne peux pas envoyer un fichier du serveur au client ? car le client n'admet pas de procedure OnRead. Du reste si c'était possible, on ne ferait surement pas de différence entre client et serveur, je pense.

Citation (de mémoire) de CCM : Le PI est le seul à échanger des commandes et des messages. En ce qui concerne le transfert de fichier, tu devrais chercher un site qui soit beaucoup plus précis que CCM sur la procédure. afin de savoir comment ca fonctionne réellement (listing des fichiers dans un stream, dans un fichier, dans un buffer ???). Je chercherais de mon coté demain.

Tu n'es pas obligé d'utiliser le protocle FTP pour faire un serveur/client pour transferer des fichiers. Tu peux faire ton propre protocole.

Pour les commandes, regarde de plus pres le protocole TelNet.

"IdFtp c est : sockets + protocole ftp ?? " : protocole FTP = protocole TELNET POUR LES COMMANDES+TRANSFERT SUR DEUX PORTS DIFFERENTS. Donc pas besoin d'avoir des TSockets en plus : tu as deja Telnet pour la connection initiale et le protocole de commande. Non la question que l'on peut se poser c'est IdFTP=VRAI FTP= c'est à dire Telnet+fichiers sur deux ports différents ? la je ne sais pas. Tu devrais regarder les sources des composants Indy, elles sont disponibles : tu en apprendrais bcp plus sur le composant IdFTP.

Je regarderais plus en détail demain, promis.

Je te conseille aussi de poster un mail à la personne qui a fait le tuto que je t'ai mis en lien. Il pourra surement t'éclairer

A+
0