Listing pour un serveur FTP ?

Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007 - 30 mai 2006 à 22:14
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 1 juin 2006 à 16:17
Bonsoir à tous,


je viens vous voir car je désespère.... J'ai comme projet de faire un
serveur FTP, et je bloque un peu, en fait beaucoup, au niveau du
listing.


J'arrive à tout faire avant, détection du user, vérification du pass,
connexion au port, enfin tout ce qu'il faut pour se connecter, mais ca
bloque au moment ou il faut lister à partir du chemin passé en
paramètre.


Voila le code que j'utilise pour faire ce listing :


FileInputStream file = null;

    try {

      File f = new File(wdir,param); // wdir est le chemin du répertoire

      file = new FileInputStream(f);

      if (dataSocket==null) {

    dataSocket = new Socket();

    dataSocket.setReuseAddress(true);

    dataSocket.bind(serverDataAddress);

    dataSocket.connect(clientDataAddress);

      }

      output.println("150 Ouverture connexion en mode binaire pour "+

             param +" ( " + file.available() + " ).\r");

    } catch (FileNotFoundException e) {

      output.println("550 "+ new File(wdir, param) +

             ": Aucun fichier ou répertoire de ce nom.\r");

      return;

    } catch (IOException e) {

      output.println("425 Impossible de créer la connexion de données\r");

      return;

    }

    try {

      send(file,dataSocket.getOutputStream());

      output.println("226 Transfert complet.\r");

    } catch (IOException e) {

      output.println("426 Connection de données interrompue.\r");

    } finally {

      try {

    file.close();

    if (!dataSocket.isClosed()) {

      dataSocket.close();

    }

      } catch (IOException e) { }

    }

L'erreur renvoyé vient de ce catch :
FileNotFoundException. J'en conclu donc que le fichier, ou plutot le
répertoire qui est en paramètre n'est pas bon, alors qu'il l'est...Pour
etre tout à fait franc, ce code je l'ai récupéré, je sais que c'est pas
ce qu'il y a de mieux à faire, mais quand on ne s'est pas du tout
comment s'y prendre, y a pas trop de choix. Le problème vient pas trop
du faite que je comprend pas le code, car je le comprend, mais plutot
du fait que je ne sais pas du tout comment faire un serveur FTP, et
quoi envoyer pour que le client comprenne qu'il doit lister.


Donc si vous pouviez m'apporter votre aide, ca serait super sympa !


Merci d'avance

3 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
31 mai 2006 à 13:14
moi pour une de mes appli (administration a distance) je fais ca :

<ol><li>
import
java.io.
File
;
</li><li></li><li><samp>/**</samp></li><li><samp>* cette classe renvoie un listing du repertoire de travail defini dans
</samp></li><li><samp>* Interface</samp></li><li><samp>* </samp></li><li><samp>* @see Interface</samp></li><li><samp>* @author Thomas</samp></li><li><samp>* </samp></li><li><samp>*/</samp></li><li>
public
class
List
extends
Thread
implements
Runnable
{
</li><li>    
public
List
() {
</li><li>        Interface.out.println(<var>"listage de : "</var> + Interface.current);
</li><li>    }
</li><li></li><li>    
public
void
run() {
</li><li>        Interface.out.println(Interface.current);
</li><li>        <samp>// list les fichier du repertoire de travail</samp></li><li>        
File
[] listing =
new
File
(Interface.current).listFiles();
</li><li>        <samp>// et pour chaque elements repertorié on les renvoie au client</samp></li><li>        
for
(
int
i = 0; i < listing.
length
; i++) {
</li><li>            Interface.out.println(listing[i]);
</li><li>        }
</li><li>        <samp>// on termine le Thread</samp></li><li>        interrupt();
</li><li>    }

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"</li></ol>
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
1 juin 2006 à 11:13
Bonjour,


merci pour ta réponse! la je suis au boulot, je peux pas tester, mais à quoi correspond ta variable Interface ?


Merci
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 juin 2006 à 16:17
c'est une classe ou se trouve les variable de flux
c'est ce qu'il faut que tu change pour choisir ta socket ^^

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous