Serveur Ftp java

Bonjour,

Je suis entrain d'implémenter un serveur Ftp en java, j'ai réussi a faire pas mal de commandes (user, pass, pwd, cwd ...), mais j'ai un problème lorsque j'essaye de me connecter a mon serveur avec le client filezilla, ce dernier affiche le message suivant :
Commande : PWD
Réponse : 257 "/home/an/Bureau/" is current directory
Commande : TYPE I
Réponse : 502 Command not implemented
Erreur : Impossible de récupérer le contenu du dossier

Voila le code pour la commande pwd :

private void processPWD() {
		
		if(status != StatusConnect.ONLINE)
			new Response(530, " Not logged in", connexion).sendMessage();
		
		else{
		
		if (this.workingDir.charAt(0) != '/') {
			File aFile = new File(this.workingDir);
			try {
				this.workingDir = aFile.getCanonicalPath();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				// e.printStackTrace();
			} 
		}
		
			new Response(257," \"" + this.workingDir +"\" is current directory", connexion).sendMessage();
	  }
		
	}


voila mon code pour la classe Serveur :

package ftp;  

import java.io.IOException;  
import java.net.ServerSocket;  
import java.net.Socket;  
import utils.Response;  
   
public class Serveur{  
   
   
 public static final int PORT = 2505;  
 public static final int MILLISECONDBEFOREDATASOCKET = 2000;  


 public static void main(String args[]) {  
  /*if (args.length != 2) {  
   System.out.println("Server working_directory listened_port");  
   System.exit(1);  
  }*/  
  Serveur server = new Serveur();  
  server.loop("/home/an/Bureau/Master1/CAR/ftp/src/ftp");  
 }  

 private void loop(String workingDir) {  
    
  System.out.println("----- FTP-SERVER---- -----");  
     
  System.out.println("****************************");  
            System.out.println("Server Started...");  
            System.out.println("Waiting for connections...");  
            System.out.println("-");  

  try {  

   ServerSocket ss = new ServerSocket(PORT);   
     
   // Sert plusieurs clients  
   while (true) {     
      
    // création d'une socket quand un demande de connexion a été acceptée  
    Socket c = ss.accept();  
    System.out.println("Connexion etablie");  
    // Envoi de message d'accueil  
    new Response(220, "FTP Server", c).sendMessage();  


    // créer un thread pour traiter la damande du client  
    FtpRequest ftpr = new FtpRequest(c,workingDir);  
    ftpr.start();  
      
   }  

  } catch (IOException e) {  
   throw new RuntimeException(e);  
  }  
    
 }  

   
}  



Vous avez des propositions ??
Merci

6 réponses

  1. Contributeur
    Tu indiques que c'est l'implémentation de la commande PWD qui pose souci.

    Sauf que là on a que le code pour l'acceptation de la connexion. Donc on ne va pas pouvoir t'aider plus.


    Le loup, solitaire et mystérieux.
    1. Contributeur
      Filezilla répond 530, mais le programme java il sort une exception ou non?
      1. Contributeur
        En fait c'est surtout 502 :

        Commande : TYPE I
        Réponse : 502 Command not implemented

        Ce serait pas plutôt parce que cette commande n'est pas implémentée que cela merdoit? Ou plutôt la commande ls ?

        Parce que la commande PWD, c'est juste pour connaître le répertoire courant.


        Le loup, solitaire et mystérieux.