Client FTP
Presentation
Objectif principal : Un client FTP complet avec interface graphique. Se connecter a un serveur FTP, naviguer dans les dossiers, telecharger et uploader des fichiers. Support du mode passif.
Technologies utilisees : Java avec sockets pour le protocole FTP (control + data channels). JavaFX pour l'interface type explorateur de fichiers. Threads pour les transferts en arriere-plan.
Fonctionnalites cles : Connexion avec login/mdp, navigation distante et locale, drag-and-drop pour transferer, barre de progression, resume de transferts interrompus, mode actif et passif.
Livrables attendus : Client graphique standalone. Support des serveurs FTP standards. Gestion des erreurs reseau.
Calendrier previsionnel : Trois semaines. Le protocole FTP est bizarrement concu (deux connexions), fallait bien comprendre.
Parties prenantes & criteres de succes : TP de reseaux avance. Le but c'etait d'implementer un vrai protocole standardise (RFC 959).
Le Defi
FTP utilise deux connexions : une pour les commandes, une pour les donnees. En mode actif, le serveur se connecte au client (probleme avec les firewalls). En mode passif c'est l'inverse. Faut gerer les deux et basculer si un marche pas.
La Solution
Je tente d'abord le mode passif (PASV), si ca marche pas je bascule en actif (PORT). Pour le mode actif, j'ouvre un ServerSocket et j'envoie l'adresse au serveur. La data connection est ephemere : ouverte pour chaque transfert puis fermee.
Architecture Technique
Classe FtpClient qui gere la control connection et les commandes. Classe DataConnection qui gere le canal de donnees. Classe TransferTask qui fait le transfert dans un thread separe avec progress callback. Interface JavaFX avec deux TreeViews (local et distant) et des boutons upload/download.
Points Cles
- Modes actif et passif
- Transferts avec progression
- Interface explorateur
Apercu
Resultats & Apprentissages
Le client marche avec les serveurs FTP standards (vsftpd, FileZilla Server). J'ai compris pourquoi FTP est considere comme un protocole mal concu (les deux connexions c'est galere). Mais ca m'a appris a lire et implementer une RFC.
Evolutions Futures
Support FTPS (FTP over TLS). SFTP qui est different (over SSH). File d'attente de transferts. Synchronisation de dossiers. Bookmarks de serveurs frequents.