IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Téléchargement simultané client FTP


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Par défaut Téléchargement simultané client FTP
    Bonjour à tous

    Tout d'abord je tiens à m'excuser si je n'ai pas posté au bon endroit, je suis débutant en Java, je poste donc la ou je pense que ce soit le mieux placé.

    Pour revenir à nos moutons
    Je dois développer un client FTP en Java avec l'api standard réservé au réseau et au thread (java.net...)

    J'ai donc une classe FTPManager qui est chargé de gérer l'intéraction avec le serveur FTP. Dans cette classe j'ai une socket utilisée pour envoyer les commandes...
    Quand je veux lancer un téléchargement je passe en mode passif, j'ai donc une nouvelle socket pour le transfert de données (une pour chaque téléchargement).
    Mon problème c'est que je ne peux pas lancer plusieurs téléchargement en même temps, car comme le 1er téléchargement n'est pas fini je ne peux pas utiliser ma socket de commande pour en lancer un autre.

    Un peu de code pour éclairer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    FTPManager.downloadFile()
    public void downloadFile(String fileName) throws FTPException
        {
            System.out.println("Download file '/" +
                                fileName +
                                "' to local directory");
     
            // On passe en mode passif
            Socket transferSocket = this.passiveMode();
     
            // On cree un fichier qui sera recopie sur la machine
            File file = new File(fileName);
     
            // On cree les flux qui vont permettre de copier le fichier sur la machine
            FileOutputStream out = null;
            InputStream in = null;
     
            try
            {
                out = new FileOutputStream(file);
                in = transferSocket.getInputStream();
            }
            catch(FileNotFoundException e)
            {
                throw new FTPException("downloadFile: " + fileName + " no such file");
            }
            catch(IOException e)
            {
                throw new FTPException("downloadFile: can't create OutputStream");
            }
     
            // On envoi la commande RETR
            this.sendCommand("RETR " + fileName);
     
            if(this.hashCodeResponse(this.readServerResponse()) != 150)
                throw new FTPException("downloadFile: bad return code RETR command - can't start file downlaod");
     
            try
            {
                DownloadFileTransfer downloadTransfer = new DownloadFileTransfer(transferSocket, in, out);
    	    downloadTransfer.start();
            }
            catch(FTPException e)
            {
                throw e;
            }
            catch(IOException e)
            {
                throw new FTPException("downloadFile: can't close transfer socket");
            }
     
            System.out.println("Download done");
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    DownloadFileTransfer.run()
    public void run()
        {            
            try
            {
                // On recupere le fichier depuis le serveur par paquet de BUFFER_SIZE octets.
                byte buffer[] = new byte[BUFFER_SIZE];
                int amount;
     
                while ((amount = in.read(buffer)) > 0)
                    out.write(buffer, 0, amount);
     
                out.close();
                in.close();
                mTransferSocket.close();
            }
            catch(FTPException e)
            {
                System.out.println("");
            }
            catch(IOException e)
            {
                System.out.println("downloadFile: can't close transfer socket");
            }
        }
    J'espère être assez clair, donc si vous avez une solution je suis preneur


    Naoss

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    La solution est de faire ce que tout le monde fait : utilisez le paquetage commons.net.

    Dans l'hypothèse où tu voudrais re-écrire un client FTP, je ne connais malheureusement pas suffisamment le protocole FTP pour te répondre de façon sûre. Dans ta situation, il me semble qu'il faudrait ouvrir une autre socket, mais j'imagine que cela demande une coordination avec le serveur.

    Peut être aussi y a-t-il une impossibilité, car je ne suis même pas sûr que le paquetage commons net offre une fonction de multiples téléchargements FTP simultané.

Discussions similaires

  1. client FTP - flag de fin de téléchargement
    Par sweetasnz dans le forum Général Python
    Réponses: 4
    Dernier message: 10/09/2013, 13h39
  2. Client FTP téléchargement de plusieurs fichiers
    Par el_coyote dans le forum Web & réseau
    Réponses: 0
    Dernier message: 18/09/2012, 22h43
  3. Réponses: 0
    Dernier message: 15/03/2009, 22h07
  4. Librairie client FTP
    Par Anonymous dans le forum Développement
    Réponses: 2
    Dernier message: 14/05/2004, 15h35
  5. Client FTP sous Linux ?
    Par DgG dans le forum Réseau
    Réponses: 7
    Dernier message: 26/01/2004, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo