Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et



Documents pareils
Introduction au protocole FTP. Guy Labasse

Guide d utilisation. Table des matières. Mutualisé : guide utilisation FileZilla

Le transfert de fichiers avec Filezilla Initiation à l'utilisation d'un client FTP

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Accéder à ZeCoffre via FTP

Plug-in Verizon Collaboration pour Microsoft Outlook Guide de l utilisateur

Comment se connecter au dossier partagé?

Guide de démarrage

Alfresco Guide Utilisateur

Installation et utilisation du client FirstClass 11

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

Contrôle Parental Numericable. Guide d installation et d utilisation

Atelier Le gestionnaire de fichier

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

SAUVEGARDER SES DONNEES PERSONNELLES

Guide de l utilisateur Mikogo Version Windows

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Un serveur FTP personnel, ça ne vous a jamais dit?

VTX FTP. Transfert de fichiers business par FTP - Manuel de l'utilisateur. Informations complémentaires : info@vtx.

TP2 : Client d une BDD SqlServer

Créer et partager des fichiers

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

FOIRE AUX QUESTIONS - WebDEPOT

Installation / Sauvegarde Restauration / Mise à jour

Manuel de l utilisateur. Soft-phone - Client VoIP 3CX Version 6.0

Contrôle Parental Numericable. Guide d installation et d utilisation

UltraBackup NetStation 4. Guide de démarrage rapide

Restaurer des données

Édu-groupe - Version 4.3

UserLock Quoi de neuf dans UserLock? Version 6

Tutorial Terminal Server sous

Manuel du logiciel PrestaTest.

Utiliser Freemind à l'école

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Arborescence et création de dossiers

Movie Cube. Manuel utilisateur pour la fonction sans fil WiFi

Envoyer et recevoir son courrier

UserLock Guide de Démarrage rapide. Version 8.5

Manuel d utilisation NETexcom

Affectation standard Affectation modifiée (exemple)

FileMaker Server 14. Aide FileMaker Server

Administration du site

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

Virtualisation de Windows dans Ubuntu Linux

Module Communication - Messagerie V6. Infostance. Messagerie

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

COURS WINDEV NUMERO 3

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.3

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Mise à jour 46 de l ENT itslearning Août 2014

Utiliser une base de données

Séquencer une application

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Nokia Internet Modem Guide de l utilisateur

Démarrer et quitter... 13

GUIDE D'UTILISATION DU SYSTEME TELEPHONIQUE POLYCOM

Introduction à Eclipse

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

FICHIERS ET DOSSIERS

TP4 : Installer configurer un contrôleur de domaine

1. Comment accéder à mon panneau de configuration VPS?

Silfid : Agence de création de site internet, formations et Conseils Retour sommaire

Manuel utilisateur (Manuel_utilisateur_version pdf) Manuel Reprise des données (Manuel_Reprise_donnees_version

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

GESTION DE L'ORDINATEUR

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

À propos de Kobo Desktop Télécharger et installer Kobo Desktop... 6

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

2 - VMWARE SERVER.doc

Manuel logiciel client for Android

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Utilisation de la Plateforme Office365 et d Oultlook Web App

Chapitre 2 Accès aux partages depuis votre système d'exploitation

INSTALLATION ET CONFIGURATION D'UN SERVEUR FTP

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Navigation dans Windows

Mettre à jour son ordinateur vers Windows 7

Placez vous au préalable à l endroit voulu dans l arborescence avant de cliquer sur l icône Nouveau Répertoire

GUIDE UTILISATEUR LIBRAIRIE CENTRALISEE ET SERVEUR DE RECEPTION

0.1 Mail & News : Thunderbird

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

Connecter le lecteur réseau de Pro-Cardex 3 Vérifier la version du gestionnaire de base de données 5 Procéder à l installation 6

italc supervision de salle

Windows Internet Name Service (WINS)

Le service FTP. M.BOUABID, Page 1 sur 5

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

CPLN 20/08/2009 MBO Service ICT et Pédagogie

UTILISER LA MESSAGERIE

GUIDE D UTILISATION ADSL ASSISTANCE

Tutoriel : Utilisation du serveur de calcul à distance de PSE

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

Transcription:

Licence 3 CDA 2010/2011 Client FTP Java Maxence Jaouan

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et Windows?... 4 Quelques fonctionnalités... 4 Les améliorations possibles... 4 Communication entres objets... 4 Divers :... 5 Les classes... 6 Principes de fonctionnement... 9 Cœur du programme... 9 Ordonnanceur... 9 Ajout d un transfert... 10 Gestion des comptes FTP... 10 Clique droit/raccourcis clavier... 10 Arrêt/Mise en pause d une tâche... 10 Communication Thread-Interface... 11 Conclusion... 12

Introduction Le but du projet Le projet qui nous a été demandé de réaliser consiste à créer un client FTP en Java pouvant être capable de transférer des fichiers, de naviguer dans les dossiers distants, de renommer et effacer un fichier ou dossier, ainsi que de créer de nouveaux dossiers. Les moyens utilisés Le projet devant être programmé en Java et sachant que les 2 meilleurs IDE pour ce langage étaient Eclipse et Netbeans, je me suis décidé d utiliser Eclipse pour le concevoir. Evidement un serveur FTP était nécessaire pour les tests. Le plus simple était d en installer nous même. Le serveur FTP FileZilla Server a donc fait office de serveur pour tester mon client.

Informations sur le client FTP Pourquoi une version Linux et Windows? Parce que j'utilise la librairie graphique SWT d'eclipse, qui est basée sur du code C. Elle utilise GTK (version 2.4.1 au minimum, peut être 2.2.1) sous Linux, et le système d'interface de base dans la version Windows. La version Windows ne marche pas sous Linux. La version Linux marche peut-être sous Windows si GTK est installé, je n'ai pas eu l'occasion de tester. Quelques fonctionnalités - les raccourcis clavier (tel que F2 pour renommer, Entrée pour transférer, Suppr pour effacer, F5 pour rafraichir un dossier). - le transfert de fichier (Upload et Download) - le Renommage, effacement de fichier - la création de dossier - la reprise d'un transfert (via fonction APPE pour l'upload et REST/STOR pour le Download), l'écrasement de fichier, le changement du nom du fichier de destination, une demande sera effectuée auprès de l'utilisateur - la gestion de plusieurs comptes FTP (sauvegarde du nom du serveur, du port, du nom d'utilisateur et du mot de passe) (Je n'ai pas eu le temps de mettre en connexion anonyme de base, au cas où les zones de saisies soient vides) Les améliorations possibles - le transfert de dossier (Upload et Download) - la multi sélection de fichier dans la liste - le glisser/déposer - les droits. Il est capable de savoir et de modifier les permissions via la classe Permission, mais il ne permet pas à l'utilisateur de modifier des droits d'un fichier/dossier via CHMOD. Et n'en prend pas compte dans les transferts - le nom d'utilisateur/groupe auquel un fichier/dossier local est lié. - la mise à jour de lecteur/fichier/dossier en temps réel. Il faut rafraichir le dossier parent pour voir les modifications. - si la connexion avec le serveur FTP plante au milieu d'une procédure nécessitant plusieurs commandes, le client se reconnectera automatiquement au serveur, cependant il ne reprendra pas au début de la procédure, il reprendra ou il en était Communication entres objets Les objets communiquent avec l'instance qui les crée via des écouteurs. De manière à retirer les dépendances entre les classes.

Divers : - Le logiciel gère 2 uploads et 2 downloads en simultané, si d'autres sont rajoutés, ils sont rajoutés dans la liste d'attente. (J ai mis arbitrairement sur 2, il suffit de changer la valeur de la variable "max_tasks" dans le fichier Scheduler.java - Un transfert devient manuel à partir du moment où il a été mis en pause. - Un transfert est affiché comme automatique lorsqu'il y a "<<<" ou ">>>" dans la colonne "<>". Au cas où il n'y ait que "<<" ou ">>", le transfert est manuel et doit être démarré via clique droit. Toutes les fonctions ont été testées et sont parfaitement fonctionnelles avec FileZilla Server sous Windows Seven.

Les classes MainFTP.java C est le cœur du programme. C est cette classe qui gère l object FTP, et les fenêtres. Chacun de ces objets étant totalement indépendant, c est aussi cette classe qui va faire office de messager. Lorsque l interface aura besoin d une information (liste des fichiers par exemple), il préviendra le cœur du programme via un écouteur, le cœur interrogera l objet FTP, puis renverra la réponse à l interface. FTP.java Classe de communication FTP, aucune commande FTP n'est présente dans les autres fichiers, excepté dans UploadTask.java et DownloadTask.java qui gèrent eux-mêmes les transferts FTPFile.java Fichier virtuel associé à un fichier FTP, hérite de java.io.file, de manière à simplifier l utilisation des fichiers dans FileTreeItem. LabelText.java Zone de saisie avec un texte d indication Exemple : Une zone de saisie avec comme texte "Cliquez-ici", et lorsque la zone de saisie prend le focus, le texte disparait pour laisser l'utilisateur rentrer une valeur, si l'utilisateur laisse la zone de saisie vide, le texte "Cliquer-ici" réapparait. FTPInfo.java Classe faisant office de sorte de structure contenant les informations sur un compte FTP, hérite de java.io.serializable afin de pouvoir la sérialiser pour l'enregistrer dans un fichier. Scheduler.java Ordonnanceur de tâches (Upload/Download), il gère la mise en attente de tâche lorsqu un certain nombre de tâche est en cours d exécution. Task.java Classe abstraite définissant une tâche de transfert. Elle est capable de prévenir lorsque son état change (En attente, en transfert, en pause, annulée, etc.).

TransfertItem.java Elément d'une table qui affiche des transferts, cette classe a pour but de simplifier les éléments en liant l'item à une tache, lui permette de gérer lui même s il a besoin d'être rafraichi, la barre de progression, ainsi que quelques actions sur le transfert, et de gérer lui même son menu contextuel AskWindow.java Fenêtre d'interaction avec l'utilisateur, demandant quelque chose tel un nom de fichier/dossier pour un renommage. MainWindow.java Fenêtre principale. Communique avec le cœur du programme en cas de nécessité (communication avec le serveur FTP, ajout de transfert, etc.). Message.java Classe statique pour envoyer des messages au cœur du programme, qui seront ensuite affichés dans la fenêtre principale. MSocket.java Classe "simplifiant" les communications par Socket, intégrant directement les flux d'entrée/sortie. ConnectionForm.java Fenêtre de gestion de comptes FTP et de connexion. FormFuncs.java Classe de fonctions statiques destinée à alléger le fichier MainWindow.java. Misc.java Classe de diverses fonctions statiques (lecture/écriture d objet dans des fichiers, convertir une taille de fichier en chaine de caractère (1500 -> 1.50Ko ou 1.46Kio), récupérer l icône d un fichier, etc.). FTPFile.java Fichier virtuel associé à un fichier FTP.

Permission.java Classe permettant de gérer les permissions à partir d'une chaine de permission du type RWXRWXRWX. AboutBox.java Fenêtre «À propos». ConnectionManager.java Classe de fonctions statiques permettant de gérer l'enregistrement et le chargement des comptes FTP. MStringTokenizer.java Classe remplaçant plus ou moins StringTokenizer, qui ne possédait pas de fonction pour récupérer tout le texte restant, du moins je ne l'ai pas trouvé. FileTreeItem.java Elément de l'arbre qui affiche les fichiers, hérite de TreeItem. Cette classe a pour but de simplifier les elements en liant l'item a un fichier, lui permette de gerer lui meme l'icone du fichier, ainsi que quelques actions sur le fichier, et de gerer lui même son menu contextuel. DownloadTask.java / UploadTask.java Tache de transfert de fichier, herite de la classe Task.

Principes de fonctionnement Cœur du programme Initialisation de l objet FTP (FTP.java). Initialisation des ordonnanceurs (1 pour l Upload et 1 pour le Download) (Scheduler.java). Initialisation et affichage de la fenêtre principale (MainWindow.java). Chargement des comptes FTP enregistrées (ConnectionManager.java) Mise en écoute des messages (Message.java) (lorsqu un message arrive, le cœur du programme peut choisir de le transférer à la fenêtre principale pour qu elle l affiche. C est cela qui permet l affichage d informations ou d erreurs dans la fenêtre principale). Mise en écoute des communications sockets (MSocket.java) (lorsqu une ligne est envoyée ou lue, le cœur du programme en est averti et il peut l afficher dans la fenêtre principale). Mise en écoute des requêtes de la fenêtre principale (lorsque la fenêtre demande une liste de fichier par exemple, le cœur du programme en est averti et peut ainsi interroger l objet FTP et renvoyer la réponse à la fenêtre). Mise en écoute lors de la création d un FileTreeItem (lorsqu un FileTreeItem est crée, il se renvoi luimême au cœur du programme, ce qui permet au cœur de se mettre directement en écoute lorsque le FileTreeItem veut démarrer un transfert, créer un nouveau dossier, rafraichir ses sous-fichiers, etc.). Ordonnanceur Contient une ArrayList de tache. On rajoute une tache via addtask() (removetask() pour en retirer une). Si l ordonnanceur est activé (en Auto-Start), dès qu une tache est rajoutée, mise en pause, arrêtée ou qu une se termine (une tache prévient son ordonnanceur qu elle a fini son travail), tant qu on n a pas atteint le nombre maximum de taches en simultané et qu il reste une tâche de l ArrayList en attente (donc ni en travail, ni annulée, ni en pause), alors la démarre.

Ajout d un transfert Vérification si le fichier existe déjà Si c est le cas, demander a l utilisateur si il veut reprendre (si possible, après avoir comparé les tailles) ou écraser le fichier Demander au cœur du programme d ajouter le transfert a un des ordonnanceurs Le cœur ajoute le transfert, et prévient la fenêtre qu il faut rajouter un transfert à la liste. Gestion des comptes FTP Pour enregistrer les comptes FTP, on enregistre directement l objet ArrayList<FTPInfo> qui contient la liste des informations sur les comptes FTP dans un fichier. Pour récupérer les comptes FTP, on charge directement l objet enregistré dans le fichier, puis on le cast en ArrayList<FTPInfo>. Clique droit/raccourcis clavier Les cliques droits et les raccourcis clavier sont d abord gérés par la fenêtre principale. Selon si cela a été fait alors qu un élément a été sélectionné (pas le cas par exemple si on clique droit dans un endroit vide de la liste), on le prévient en appelant une de ses fonctions. Autrement on gère directement l interaction (un menu contextuelle avec certaines options ne nécessitant pas la sélection d un élément par exemple). Arrêt/Mise en pause d une tâche Une tâche est démarrée dans un thread qui lui est propre. Pour l arrêtée au cours de son exécution, il y a 2 possibilités. Tout d abord il existe la méthode Stop() de la classe Thread qui permet l arrêt pur et simple du Thread. Mais cette méthode est dépréciée du fait de son caractère brutal. En effet si la tâche s arrête au milieu d une communication, cela peut être préjudiciable (pour un download par exemple, la tâche remplit son tampon, mais le thread s arrête, la tâche n a pas le temps d écrire ce qu elle a reçu dans le fichier de destination. De plus, s il s agissait de la toute fin du fichier, il aurait été préférable de finaliser le transfert et le considérer comme terminé). D autre part, il est préférable de fermer les flux ouverts (socket, fichier). Cette méthode est donc à éviter. L autre technique consiste à prévenir le thread qu il devra s arrêter quand il pourra. Dans ce programme, l ordonnanceur mettra à Vrai une des variables de l objet de transfert (booléen hastostop). À chaque boucle de transfert (lecture du fichier/écriture dans le socket ou lecture du socket/écriture dans le fichier), la tâche vérifiera si on lui a demandé de s arrêter, si c est le cas et qu il ne s agissait pas de la fin du fichier (auquel cas le transfert sera finalisé et la demande d arrêt sera ignorée), elle enregistra son état d arrêt et de finalisera complètement (fermeture des flux et des connexions).

Communication Thread-Interface La plupart des librairies graphiques n autorisent pas l accès au thread graphique depuis un thread non graphique, cela est dû en partie à la gestion des interfaces par l OS. La libraire SWT en fait partie, c est pour cela que le seul moyen d accéder à l interface (pour changer l évolution des barres de progressions, le texte des zones de saisies, etc.) est d utiliser des méthodes de la classe Display (syncexec() et asyncexec()). Par exemple, pour modifier le texte d une zone de saisie, si nous utilisons ce code, une exception «Invalid thread access» sera lancée : textbox.settext("hello!"); Pour éviter cela, voici le code à utiliser : Display.getDefault().asyncExec(new Runnable() { public void run() { textbox.settext("hello!"); } });

Conclusion La conception de ce client FTP m a permis d apprendre au mieux le langage Java en mettant en pratique ce que l on a vu en cours. L idée du client FTP est d autant plus intéressante que le logiciel conçu pourra nous servir.